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);
            }