C # Определить ширину UserControl - PullRequest
0 голосов
/ 09 апреля 2019

Я использую формы Windows Forms и хочу определить ширину 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, а затем ставлю якорь во всех направлениях, когда он меньше 600.

Ответы [ 3 ]

0 голосов
/ 09 апреля 2019

Мне удалось изменить 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);
        }
    }
0 голосов
/ 10 апреля 2019

Почему, когда я делаю это, все мои якоря перестают работать? Я знаю, что я указываю новую ширину, потому что мне это нужно. Есть предложения?

            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);
            }
0 голосов
/ 09 апреля 2019

Попробуйте событие Resize вашего пользовательского элемента управления:

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

private void UserControl1_Resize(object sender, EventArgs e)
{
    if (this.Width > 600)
        ...
}
...