Как очистить текст текстового поля с помощью contextmenuStrip

Я хочу знать, есть ли способ очистить текстовое поле, когда я нажимаю contextMenuStrip (1 элемент с именем clear). У меня есть 4 текстовых поля, которым я дал одно и то же имя contextMenuStrip для всех текстовых полей. при запуске приложения я добавил текст в textbox1. когда я щелкаю правой кнопкой мыши текстовое поле1 и выбираю очистить (contextMenuStripItem), весь текст должен быть очищен. Точно так же, когда я щелкаю правой кнопкой мыши по текстовому полю 2 и выбираю «Очистить», весь текст должен быть очищен. Я программирую в winforms VS2010

Заранее спасибо :)

РЕДАКТИРОВАТЬ: код, который я пробовал, может не соответствовать правильному соглашению об именах:

В Designer.cs

        // contextMenuStrip1
        // 
        this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
        this.clearToolStripMenuItem});
        this.contextMenuStrip1.Name = "contextMenuStrip1";
        this.contextMenuStrip1.Size = new System.Drawing.Size(100, 26);
        // 
        // textBox1
        // 
        this.textBox1.ContextMenuStrip = this.contextMenuStrip1;
        this.textBox1.Location = new System.Drawing.Point(224, 191);
        this.textBox1.Name = "textBox1";
        this.textBox1.Size = new System.Drawing.Size(100, 20);
        this.textBox1.TabIndex = 8;
        // 
        // clearToolStripMenuItem
        // 
        this.clearToolStripMenuItem.Name = "clearToolStripMenuItem";
        this.clearToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
        this.clearToolStripMenuItem.Text = "clear";
        this.clearToolStripMenuItem.Click += new System.EventHandler(this.clearToolStripMenuItem_Click);
this.Controls.Add(this.textBox1);


   private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
    private System.Windows.Forms.ToolStripMenuItem clearToolStripMenuItem;
    private System.Windows.Forms.TextBox textBox1;

В Form.cs

 private void clearToolStripMenuItem_Click(object sender, EventArgs e)
    {
        ToolStripItem menuItem = sender as ToolStripItem;
        if (menuItem != null)
        {
            ContextMenuStrip owner = menuItem.Owner as ContextMenuStrip;
            if (owner != null)
            {
                Control sourceControl = owner.SourceControl;
                MessageBox.Show(sourceControl.Name);
                MessageBox.Show(sourceControl.Text);
            }
        }

    }

поэтому, когда я щелкаю правой кнопкой мыши по textBox1, отображается его текст и имя. Итак, мой вопрос в том, как очистить этот текст. Достаточно ли иметь одно и то же contextMenu для всех текстовых полей и очищать текст, или мне нужно использовать разные contextMenu для разных текстовых полей.


person Gopi    schedule 01.09.2015    source источник
comment
У вас уже есть контекст, открывающийся при щелчке правой кнопкой мыши? или для этого вам тоже нужен код?   -  person Simon Price    schedule 01.09.2015
comment
@ X-TECH Я могу получить доступ к названию текстового поля, которое я щелкнул, и его тексту, но я не могу его очистить. :(   -  person Gopi    schedule 01.09.2015
comment
@SimonPrice У меня открывается контекст при щелчке правой кнопкой мыши и я могу получить доступ к данным, но не могу очистить текст текстового поля   -  person Gopi    schedule 01.09.2015
comment
Посмотрите: Как настроить ContextMenu по умолчанию для элемента управления TextBox в приложении Windows Forms с помощью C #. Надеюсь, у вас появится идея решить вашу проблему.   -  person NASSER    schedule 01.09.2015
comment
@ X-TECH Я четко упомянул, что использовал одно и то же контекстное меню для 4 текстовых полей, поэтому я не могу напрямую писать код textBox1.Clear (); поскольку во время выполнения мы не уверены, что это textbox1.   -  person Gopi    schedule 01.09.2015
comment
Можете ли вы отредактировать вопрос, чтобы показать код, который у вас уже есть, пожалуйста   -  person Simon Price    schedule 01.09.2015
comment
Назначьте свое контекстное меню каждому текстовому полю свойство ContextMenuStrip   -  person NASSER    schedule 01.09.2015
comment
Кстати, ваше соглашение об именах должно измениться, чтобы быть более наглядным, чем textBox1, textBox2 ...   -  person Simon Price    schedule 01.09.2015
comment
@SimonPrice Пожалуйста, проверьте вопрос, который я редактировал.   -  person Gopi    schedule 01.09.2015


Ответы (1)


Заменять

Control sourceControl = owner.SourceControl;

с участием

TextBox sourceControl = owner.SourceControl as TextBox;
sourceControl.Text = string.Empty;    
// or   sourceControl.Clear();
person NASSER    schedule 01.09.2015
comment
sourceControl.Clear (); нет, но следующий работал нормально. Вы просто редактируете свой ответ. Спасибо :) - person Gopi; 01.09.2015