C# 检测 UserControl 宽度

我正在使用 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 时我需要在所有方向放置锚点。


梵蒂冈之花
浏览 110回答 3
3回答

心有法竹

尝试Resize您的用户控件的事件:public UserControl1(){     InitializeComponent();     this.Resize += UserControl1_Resize;}private void UserControl1_Resize(object sender, EventArgs e){    if (this.Width > 600)        ...}

慕桂英4014372

当宽度改变时,我设法改变了 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);        }    }

慕田峪9158850

为什么当我这样做时,我所有的锚点都停止工作了?我知道我正在指定新的宽度,因为我需要它。有什么建议么?            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);            }
打开App,查看更多内容
随时随地看视频慕课网APP