C# 检测 UserControl 宽度
C# Detect UserControl width
我正在使用 Windows 表单,我想检测我的 UserControl 宽度并在宽度达到限制时更改 AnchorStyle。
这是我尝试编写的代码。
if (ucControl.Width > 600)
{
ucControl.Anchor = AnchorStyles.None;
ucControl.Anchor = (AnchorStyles.Bottom | AnchorStyles.Top);
}
else
{
ucControl.Anchor = (AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Left);
}
现在它所做的是当我调整大小时,它已经是顶部和底部锚点。但我只在达到 600 时才需要 Top 和 Bottom,当它小于 600 时,我需要在所有方向放置锚点。
尝试您的用户控件的 Resize
事件:
public UserControl1()
{
InitializeComponent();
this.Resize += UserControl1_Resize;
}
private void UserControl1_Resize(object sender, EventArgs e)
{
if (this.Width > 600)
...
}
当宽度改变时,我设法改变了 AnchorStyle。现在我不想在重新调整大小时将 Anchor Style 放回去。但我无法获得正确的后退大小代码。
这是我的完整代码。
static string Xpos = 348;
private void UControl_Resize(object sender, EventArgs e)
{
Main OP = (Main)ParentForm;
if (this.Width > 699)
{
this.Anchor = AnchorStyles.None;
this.Anchor = (AnchorStyles.Bottom | AnchorStyles.Top);
}
else if (OP.ucControl.Location = Xpos) //This bit doesn't work
{
this.Anchor = (AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Left);
}
}
为什么当我这样做时,我所有的锚点都停止工作了?
我知道我正在指定新的宽度,因为我需要它。有什么建议吗?
if (this.WindowState == FormWindowState.Normal)
{
ucChat.FlowChat.Size = new Size(323, 276);
ucChat.FlowChat.Left = (ucChat.ClientSize.Width - ucChat.FlowChat.Width) / 2;
ucChat.FlowChat.Anchor = (AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Left);
}
我正在使用 Windows 表单,我想检测我的 UserControl 宽度并在宽度达到限制时更改 AnchorStyle。
这是我尝试编写的代码。
if (ucControl.Width > 600)
{
ucControl.Anchor = AnchorStyles.None;
ucControl.Anchor = (AnchorStyles.Bottom | AnchorStyles.Top);
}
else
{
ucControl.Anchor = (AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Left);
}
现在它所做的是当我调整大小时,它已经是顶部和底部锚点。但我只在达到 600 时才需要 Top 和 Bottom,当它小于 600 时,我需要在所有方向放置锚点。
尝试您的用户控件的 Resize
事件:
public UserControl1()
{
InitializeComponent();
this.Resize += UserControl1_Resize;
}
private void UserControl1_Resize(object sender, EventArgs e)
{
if (this.Width > 600)
...
}
当宽度改变时,我设法改变了 AnchorStyle。现在我不想在重新调整大小时将 Anchor Style 放回去。但我无法获得正确的后退大小代码。 这是我的完整代码。
static string Xpos = 348;
private void UControl_Resize(object sender, EventArgs e)
{
Main OP = (Main)ParentForm;
if (this.Width > 699)
{
this.Anchor = AnchorStyles.None;
this.Anchor = (AnchorStyles.Bottom | AnchorStyles.Top);
}
else if (OP.ucControl.Location = Xpos) //This bit doesn't work
{
this.Anchor = (AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Left);
}
}
为什么当我这样做时,我所有的锚点都停止工作了? 我知道我正在指定新的宽度,因为我需要它。有什么建议吗?
if (this.WindowState == FormWindowState.Normal)
{
ucChat.FlowChat.Size = new Size(323, 276);
ucChat.FlowChat.Left = (ucChat.ClientSize.Width - ucChat.FlowChat.Width) / 2;
ucChat.FlowChat.Anchor = (AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Left);
}