1

我正在使用 Windows 窗体,我想检测我的 UserControl Width 并在 Width 达到限制时更改 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 时我才需要顶部和底部,当它小于 600 时我需要在各个方向放置锚。

4

3 回答 3

0

尝试Resize您的用户控件的事件:

public UserControl1()
{
     InitializeComponent();
     this.Resize += UserControl1_Resize;
}

private void UserControl1_Resize(object sender, EventArgs e)
{
    if (this.Width > 600)
        ...
}
于 2019-04-09T11:18:42.550 回答
0

当 Width 改变时,我设法改变了 AnchorStyle。现在,当我调整它的大小时,我不想把锚样式放回去。但我无法获得正确的代码来调整大小。这是我的完整代码。

    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);
        }
    }
于 2019-04-09T12:33:03.537 回答
0

为什么当我这样做时,我所有的锚都停止工作了?我知道我正在指定新的宽度,因为我需要它。有什么建议么?

            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);
            }
于 2019-04-10T11:02:46.537 回答