Если оператор запускается нажатием кнопки - PullRequest
0 голосов
/ 06 мая 2020

Вот мой код:

public static string name;
private void openWindow(object sender, EventArgs e)
{
    if (button_name1.PerformClick){
        name = "name1";
    }
    if (button_name2.PeformClick)
    {
        name = "name2";
    }
    else
    {
        name = "name3";
    }
    this.Hide();
    Form2 form2 = new Form2();
    form2.ShowDialog();      
}

Итак, у меня есть три кнопки, каждая из которых должна открывать новое идентичное окно при нажатии. Но каждая кнопка должна сохранять другое имя в строке (name).

Моя цель в этом if условии именно такая, но VS2017 говорит, что PeformClick нельзя преобразовать в тип bool.

Во-вторых, это означает, что кнопка не имеет определения для PeformClick.

Как я могу решить эту проблему?

Или я попробовал это полностью неправильно с самого начала?

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Предполагая, что у вас есть древовидные кнопки, и все их события нажатия прикреплены к openWindow что-то ниже может сработать для вас.

public static string name;
private void openWindow(object sender, EventArgs e)
{
    Button senderButton = (Button)sender;
    if (senderButton == button1)
    {
        name = "name1";
    }
    else if (senderButton == button2)
    {
        name = "name2";
    }
    else
    {
        name = "name3";
    }
    this.Hide();
    Form form2 = new Form();
    form2.ShowDialog();
}

На самом деле это полный код подхода, который также предлагается @Hans Ke st ing.

1 голос
/ 06 мая 2020

Прикреплен ли этот "openWindow" как обработчик кликов ко всем трем кнопкам? Тогда «отправитель» - это указанная кнопка c, вам просто нужно ее применить. Вы можете заранее установить свойство .Tag и прочитать его значение в обработчике.

private void openWindow(object sender, EventArgs e)
{
    Button clickedButton = (Button)sender;
    name = clickedButton.Tag;

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