我正在尝试让 Windows 窗体上的 UserControl(上面有一个网格)调整大小。 下面的代码是我在表格中的代码。我得到的行为是当我变大时控件会调整大小。但它不会收缩。我做错了什么(或)我错过了什么?
private void AdjustGrid()
{
ZoomControl.Location = new Point(5, 5);
ZoomControl.Size = new Size(this.Width - 15, this.Height - 75);
}
void zoomform_Resize(object sender, EventArgs e)
{
AdjustGrid();
}
现在用户控件有如下代码:
//Resize the grid that the UserControl has on it
private void NameValuePropertyBag_Resize(object sender, EventArgs e)
{
grdNameValueProperties.Location = new Point(4,4);
grdNameValueProperties.Size = new Size(this.Width - 8, this.Height - 8);
}
<罢工> 我试过了
grdNameValueProperties.Size.Width = this.Width - 8;
grdNameValueProperties.Size.Height = this.Height -8;
它给我“无法修改表达式,因为它不是变量”错误...我错过了什么?
罢工>
附加信息:
我正在使用 SetParent() Windows 调用将 UserControl 移动/缩放到另一个窗体 (ZoomForm)。 <罢工> anchor 似乎不适用于使用 SetParent() 移动的控件...更准确地说,它可能有效,但我有重绘问题。 罢工>
我让 Anchor/Dock 配对正常工作,没有重绘问题 [我删除了调整大小事件连接并将 Dock 调整为 Fill]
ZoomForm 最初没有控件。 Usercontrol 被动态添加到 ParentForm。
目前,我可以使用上面的代码使缩放表单变大,但不能变小。
最佳答案
grdNameValueProperties.Size.Width = this.Width - 8;
grdNameValueProperties.Size.Height = this.Height - 8;
该代码给出了错误,因为 Size
是值类型,而不是引用类型。读书this可能有助于解释值类型和引用类型之间的区别。
关于c# - 无法修改表达式,因为它不是变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/749869/