Есть ли какой-нибудь способ вернуть имя элемента управления, на который я нажимаю в приложении winform

#c# #.net

#c# #.net

Вопрос:

У меня есть 10 флажков в форме … и что я хочу, так это когда я щелкаю правой кнопкой мыши по флажку и нажимаю редактировать в контекстном меню, тогда текстовое значение флажка должно измениться.. итак, что я хочу, так это установить флажок и тот флажок из 10, на котором я щелкнул правой кнопкой мыши.. не могу даже использовать объект sender, так как объект sender вернет «Редактировать», когда мы нажимаем «Редактировать» в контекстном меню..

Комментарии:

1. Какой класс вы используете для контекстного меню?

Ответ №1:

Предположим, у вас есть несколько флажков в форме и один ContextMenuStrip, который назначен для каждого флажка. Вы можете получить объект checkbox в обработчике щелчка элемента контекстного меню, как показано ниже:

     private void changeToolStripMenuItem_Click(object sender, EventArgs e)
    {
        CheckBox myCheckbox = (((sender as ToolStripDropDownItem).Owner as ContextMenuStrip).SourceControl as CheckBox);
        myCheckbox.Text = DateTime.Now.ToString();
    }
  

Ответ №2:

 ("Edit".Parent as ContextMenu/ContextMenuStrip).SourceControl
  

Ответ №3:

Присоединитесь к MouseDown событию на элементе управления checkbox и посмотрите, была ли нажата правая кнопка мыши ( MouseButtons.Right ), и сохраните это в переменной like currentCheckBox , на которую вы затем можете ссылаться.