C # Назначение одной кнопки другой - PullRequest
3 голосов
/ 08 февраля 2011

У меня есть приложение с графическим интерфейсом, к которому добавлена ​​кнопка. Внутри нескольких плагинов DLL создается новая кнопка, которую необходимо добавить в графический интерфейс вместо существующей.

Есть ли способ просто сказать ButtonA = ButtonB? Или мне нужно удалить кнопку из графического интерфейса во время выполнения, а затем добавить новую?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 08 февраля 2011

Или вы можете просто связать его с другим обработчиком, например:

ваш старый обработчик событий Click

private void ButtonA_Click(object sender, EventArgs e)
{
//Do sth
}

ваш новый обработчик события Click (например, если вы создаете новую кнопку)

private void ButtonB_Click(object sender, EventArgs e)
{
//Do sth
}

тогда вам нужно удалить первый обработчик и добавить новый обработчик:

ButtonA.Click -= this.ButtonA_Click;
ButtonA.Click += new EventHandler(ButtonB_Click);
1 голос
/ 08 февраля 2011

Ваша кнопка добавлена ​​к некоторому родителю (например, к Форме).Это означает, что вы должны удалить исходную кнопку из коллекции элементов управления формы и добавить новую кнопку.Или вы можете заменить кнопку внутри коллекции Controls.

Допустим, после перебора коллекции вы обнаружите, что кнопка является 5-м элементом, и вы можете сделать что-то вроде этого:*

Я не уверен на 100%, означает ли это, что вам придется вручную отключить экран для обновления графического интерфейса.В этом случае звоните ButtonB.Invalidate();

0 голосов
/ 08 февраля 2011

Скопируйте интересующие вас свойства с первой кнопки на вторую созданную, а затем либо удалите первую кнопку из коллекции Controls, либо установите. Visible в false.

Что касается событий, у вас там будут проблемы, потому что вам придется вызывать старые обработчики событий кнопок вручную - в .NET нет способа читать подписчиков OnClick (или любого другого события).

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