c# - 无法修改表达式,因为它不是变量

标签 c# winforms user-controls

我正在尝试让 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/

相关文章:

c# - 什么是 Control.Disposing 属性?

asp.net - 如何根据属性值更新设计时 UserControl 界面?

c# - 传播 DependencyProperty 默认值

只有单个属性 : derive from base or encapsulate into new? 的 C# 新类

c# - 重构设计模式 : applying adapter pattern to 3rd party API

c# - 单击 "X"按钮时要求确认

c# - 如何判断列表框中的内容在哪一行

wpf - 使用 XAML/WPF 实现复杂曲线编辑器的策略

c# - 仅在鼠标离开时自动反转为原始颜色

c# - 覆盖等于 : typeof returns the static type