none
Как получить объект элемента (в событийный метод класса From1), по которому был щелчок (Windows Form C#) ? RRS feed

  • Вопрос

  • Что у нас имеется в конструкторе (Windows Forms):

    Имеется кнопка (button) и элемент сontextMenuStrip1 (с элементами внутри: - добавить, удалить) который привязан к этой кнопке (ContextMenuStrip = сontextMenuStrip1).

    Действия:

    Кнопка (щелчок по ней правой кнопкой мыши) -> Щелчок по любому из элементов элемента сontextMenuStrip1 -> Вызов метода (AddToolStripMenuItem_Click)...  и мне нужно каким-то образом получить объект кнопки (в этот (AddToolStripMenuItem_Click) метод)  для работы с ней (button.Text = "новое название";). Как это сделать ?


    • Изменено Killromjik 6 декабря 2014 г. 20:31
    6 декабря 2014 г. 20:26

Ответы

  • Используйте свойство SourceControl. В нём будет ссылка на контрол, открывший это контекстное меню.

    private void addToolStripMenuItem_Click(object sender, EventArgs e)
    {
        contextMenuStrip1.SourceControl.Text = "foo";
    }

    • Помечено в качестве ответа Killromjik 7 декабря 2014 г. 5:46
    6 декабря 2014 г. 22:12

Все ответы

  • Объект кнопки - поле того же класса, что и метод-обработчик команды меню. Зачем получать объект кнопки, он у Вас уже есть?

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    6 декабря 2014 г. 21:21
  • Вот именно, что нет. Кнопки создаются через цикл, кнопок много, мне нужно узнать, какая именно кнопка обращается к методу. 
    6 декабря 2014 г. 21:33
  • Используйте свойство SourceControl. В нём будет ссылка на контрол, открывший это контекстное меню.

    private void addToolStripMenuItem_Click(object sender, EventArgs e)
    {
        contextMenuStrip1.SourceControl.Text = "foo";
    }

    • Помечено в качестве ответа Killromjik 7 декабря 2014 г. 5:46
    6 декабря 2014 г. 22:12
  • А как тоже самое проделать с кнопкой (т.е. щёлкнул на кнопку, вызвал метод и получил объект этой кнопки) ?)
    7 декабря 2014 г. 15:33
  • object sender в параметрах обработчика события - это и есть кнопка.

    Нужно сделать приведение типа: Button btn = (Button)sender; и можно использовать.

    8 декабря 2014 г. 6:29