Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Suppir
25 / 25 / 10
Регистрация: 08.08.2011
Сообщений: 1,158
1

Одно контекстное меню для 5 textbox'ов

09.05.2012, 14:11. Просмотров 2158. Ответов 7
Метки нет (Все метки)

У меня 5 текстбоксов. Нужно для каждого текстбокса создать контекстное меню с одной кнопкой "свернуть строки". Как это проще всего сделать?
1
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2012, 14:11
Ответы с готовыми решениями:

Как сделать одно контекстное меню для нескольких richTextBox?
На форме четыре richTextBox, для каждого из них необходимо контекстное меню со стандартными...

Как создать контекстное меню. Например нажимая на richTextBox правой кнопкой мыши, мне бы предоставлялось контекстное меню
Как создать контекстное меню. Например нажимая на richTextBox правой кнопкой мыши, мне бы...

Контекстное меню для PictureBox
Доброе время суток всем. У меня возник вопрос: Подскажите как контекстное меню можно добавить...

Создать контекстное меню для NotifyIcon
Как сделать такую менюшку для программы?

Назначить контекстное меню для NotifyIcon
Ребят я всё реализовал с NotifyIcon что мне надо но я бы хотел чтобы при клике на значок ->...

7
Федя
29 / 29 / 10
Регистрация: 30.06.2011
Сообщений: 35
09.05.2012, 14:29 2
Из ToolBox перетащить на форму ContextMenuStrip и для каждого TextBox'а выбрать его в свойстве ContextMenuStrip.
1
Suppir
25 / 25 / 10
Регистрация: 08.08.2011
Сообщений: 1,158
09.05.2012, 14:45  [ТС] 3
Спасибо. Допустим, пользователь на textbox1 вызывает контекстное меню. Потом кликает "свернуть строки". Если контекстное меню одно, то как понять, из какого текстбокса оно было вызвано?
0
Федя
29 / 29 / 10
Регистрация: 30.06.2011
Сообщений: 35
09.05.2012, 15:04 4
C#
1
2
3
4
private void свернутьToolStripMenuItem_Click(object sender, EventArgs e)
{
     MessageBox.Show(contextMenuStrip1.SourceControl.Name);
}
2
09.05.2012, 15:04
Памирыч
Почетный модератор
21126 / 8855 / 1080
Регистрация: 11.04.2010
Сообщений: 11,012
09.05.2012, 15:04 5
Suppir, это свойство SourceControl, в нем и хранится объект, которому назначено меню

vb.net
1
2
3
    Private Sub ТестToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ТестToolStripMenuItem.Click
        ContextMenuStrip1.SourceControl.Text = "Test"
    End Sub
2
mbigun
131 / 131 / 46
Регистрация: 21.04.2009
Сообщений: 178
09.05.2012, 15:14 6
И я бы так делал. Через SourceControl

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace BUILDER
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            ContextMenuStrip menuItems = new System.Windows.Forms.ContextMenuStrip();
            //Добавляешь елементы в меню. В твоем случае это будет один елемент
            menuItems.Items.Add("Свернуть");
            //Обрабатываешь клик на елементе меню
            menuItems.ItemClicked += new ToolStripItemClickedEventHandler(mm_ItemClicked);
            //Добавляешь контекстное меню в свои текстбоксы
            textBox1.ContextMenuStrip = menuItems;
            textBox2.ContextMenuStrip = menuItems;
            textBox3.ContextMenuStrip = menuItems;
        }
        private void mm_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            //На клике проверяешь на каком контроле было вызвано меню.
            switch (textBox1.ContextMenuStrip.SourceControl.Name)
            {
                case "textBox1": MessageBox.Show("Я был вызван на " + textBox1.ContextMenuStrip.SourceControl.Name); break;
                case "textBox2": MessageBox.Show("Я был вызван на " + textBox1.ContextMenuStrip.SourceControl.Name); break;
                case "textBox3": MessageBox.Show("Я был вызван на " + textBox1.ContextMenuStrip.SourceControl.Name); break;
            }
        }
   }
}
1
Suppir
25 / 25 / 10
Регистрация: 08.08.2011
Сообщений: 1,158
09.05.2012, 15:43  [ТС] 7
Добавлено через 3 минуты
Пока писал, mbigun уже ответил. Спасибо!

Еще вопрос возник:
В текстбоксе выделен какой-то текст. Как в контекстном меню динамически создать элемент "Искать фразу: <выделенный в текстбоксе текст>"
0
Федя
29 / 29 / 10
Регистрация: 30.06.2011
Сообщений: 35
09.05.2012, 16:29 8
C#
1
2
3
4
5
6
7
8
9
10
11
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
    switch (contextMenuStrip1.SourceControl.Name)
    {
        case "textBox1":
            if (textBox1.Text != "" && textBox1.SelectionLength != 0)
                contextMenuStrip1.Items.Add("искать фразу: " + textBox1.SelectedText);
            break;
            .........
    }
}
1
09.05.2012, 16:29
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2012, 16:29

Контекстное меню для Грида...
Нужно ревлизовать контекстрое меню у динамичести созданного контрола - грида. Выдается ошибка:В...

Для нескольких форм сделать общее контекстное меню
Добрый день. Возникла задача - для нескольких форм сделать общее контекстное меню. Особо не...

Как отобразить контекстное меню для иконки в трее?
Добрый день! Подскажите пожалуйста, как запустить контекстное меню трея во время работы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.