WinForms: динамически добавлять / удалять AnchorStyles для / контроля - PullRequest
0 голосов
/ 13 января 2020

В настоящее время я работаю над редактором, который позволяет пользователю создавать собственные оверлеи WinForm, по крайней мере, до определенной точки. Поэтому я хочу, чтобы пользователь решил, какие AnchorStyles должен иметь текущий выбранный элемент управления. Я хотел бы, чтобы это обрабатывалось флажками. Вот как я это имел в виду:

enter image description here

Как видите, в настоящее время пользователь выбрал динамически добавляемую панель с именем Grid. Обрабатываясь флажками справа, он теперь сможет установить выбранные элементы управления AnchorStyles. Вот моя проблема: я не могу найти подходящее решение, чтобы динамически добавить определенный c AnchorStyle к уже существующим, или наоборот, удалить AnchorStyle, но оставить другие как есть.

Я пытался заставить его работать с ...

SelectedControl.Anchor += AnchorStyles.Top;

, который вообще не работает. Так что я подумал об этом ...

SelectedControl.Anchor = SelectedControl.Anchor | AnchorStyles.Top

, который, как мне кажется, мог бы сработать, но я даже не проверял его, так как не знал, как удалить непроверенный AnchorStyle. Создание гиганта c if(){} else if(){}... не кажется хорошей идеей:)

Я открыт для любых идей / решений. Заранее спасибо!

1 Ответ

2 голосов
/ 13 января 2020

Предполагая, что у вас есть четыре элемента управления флажками с именами top, bottom, left и right, вы можете обработать событие CheckedChange из них одним методом и установить привязку нужного элемента управления на основе проверенное значение элементов управления. Например:

private void checkBox_CheckedChanged(object sender, EventArgs e)
{
    var values = new[] { top.Checked, bottom.Checked, left.Checked, right.Checked };
    byte[] data = new byte[1];
    new BitArray(values).CopyTo(data, 0);

    selectedControl.Anchor = (AnchorStyles)data[0];
}

Примечание: AnchorStyles - перечисление флага, имеющее top = 1, bottom = 2, left = 4 и right = 8. Используя приведенный выше код, я смешал эти флаги для создания AnchorStyles и присвоил свойству Anchor элемента управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...