Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 17.11.2015
Сообщений: 74
1

Tooltip на items'ax combobox

23.04.2016, 20:02. Показов 4383. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Товарисчи, ситуевина такая: есть комбобокс в который данные добавлены из бд access. И мне надо, чтобы пр наведении на какую либо из строк комбобокса появлялась подсказка. Как данное действие замутить? Знаю только что тут надо связать mousemove и tooltip, но как это сделать хоть убейте не пойму, объясните кто в теме?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2016, 20:02
Ответы с готовыми решениями:

DataGridView Combobox Tooltip
Есть DataGridView. В нем есть ComboBox. Мне необходимо, чтобы на каждое значение в этом самом...

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

Динамический ToolTip для ComboBox
Всем привет. Столкнулся с проблемой. По порядку. 1.Есть комбобокс. 2.Данные в комбобокс...

tooltip
Всем привет!) Толком не знаком ни с Extjs, ни javascript, и английский не знаю - полная ж.пень!...

14
103 / 104 / 54
Регистрация: 23.03.2016
Сообщений: 462
23.04.2016, 20:34 2
Markell,

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
private void Form1_Load(object sender, EventArgs e)
{
    comboBox1.Items.AddRange(new string[] { "1", "2", "3", "4", "5" }); //элементы комбобокса
    comboBox1.DrawMode = DrawMode.OwnerDrawFixed;
    comboBox1.DrawItem += comboBox1_DrawItem;
    comboBox1.DropDownClosed += comboBox1_DropDownClosed;
}
 
private void comboBox1_DropDownClosed(object sender, EventArgs e)
{
    toolTip1.Hide(comboBox1);
}
 
private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
    string[] textArray = { "Один", "Два", "Три", "Четыре", "Пять" }; //подсказки, соответствующие элементам
    if (e.Index < 0) { return; } 
    string text = textArray[e.Index];
    e.DrawBackground();
    using (SolidBrush br = new SolidBrush(e.ForeColor))
    { e.Graphics.DrawString(comboBox1.GetItemText(comboBox1.Items[e.Index]), e.Font, br, e.Bounds); }
    if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
    { toolTip1.Show(text, comboBox1, e.Bounds.Right, e.Bounds.Bottom); }
    e.DrawFocusRectangle();
}
https://www.cyberforum.ru/post8580569.html
1
0 / 0 / 0
Регистрация: 17.11.2015
Сообщений: 74
24.04.2016, 13:51  [ТС] 3
пишет что имя tooltip не существует в текущем контексте
0
103 / 104 / 54
Регистрация: 23.03.2016
Сообщений: 462
24.04.2016, 14:43 4
Markell, добавьте его в конструкторе формы
0
0 / 0 / 0
Регистрация: 17.11.2015
Сообщений: 74
24.04.2016, 17:58  [ТС] 5
что то я туплю, спасибо тебе огромное)
0
0 / 0 / 0
Регистрация: 29.11.2016
Сообщений: 9
09.07.2018, 19:50 6
Воспользовался примером, компилятор не дает ошибок, но при запуске программы из Combobox пропадают все строки и свойства
или добавлять итемы в комбобоксе нужно по новой?

Добавлено через 31 минуту
System.IndexOutOfRangeException: "Индекс находился вне границ массива." в строке string text = textArray[e.Index];
как быть?
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
09.07.2018, 19:56 7
Oxis, значит размер твоего массива меньше, чем количество элементов списка.
0
0 / 0 / 0
Регистрация: 29.11.2016
Сообщений: 9
09.07.2018, 20:12 8
Цитата Сообщение от ViterAlex Посмотреть сообщение
Oxis, значит размер твоего массива меньше, чем количество элементов списка.
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
private void MainWindow_Load(object sender, EventArgs e)
        {
            comboBox1.Items.AddRange(new string[] { "1", "2", "3", "4", "5"}); //элементы комбобокса
            comboBox1.DrawMode = DrawMode.OwnerDrawFixed;
            comboBox1.DrawItem += comboBox1_DrawItem;
            comboBox1.DropDownClosed += comboBox1_DropDownClosed;
        }
        private void comboBox1_DropDownClosed(object sender, EventArgs e)
        {
            toolTip1.Hide(comboBox1);
        }
 
        private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
        {
            string[] textArray = { "Один", "Два", "Три", "Четыре", "Пять"}; //подсказки, соответствующие элементам
            if (e.Index < 0) { return; }
            string text = textArray[e.Index];
            e.DrawBackground();
            using (SolidBrush br = new SolidBrush(e.ForeColor))
            { e.Graphics.DrawString(comboBox1.GetItemText(comboBox1.Items[e.Index]), e.Font, br, e.Bounds); }
            if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
            { toolTip1.Show(text, comboBox1, e.Bounds.Right, e.Bounds.Bottom); }
            e.DrawFocusRectangle();
        }
 
 
 
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
 
            if (comboBox1.SelectedIndex == 0)
            {
                AM form = new AM();
                form.Show();
                comboBox1.SelectedIndex = -1;
 
            }
            if (comboBox1.SelectedIndex == 1)
            {
                MessageBox.Show("Материал скоро будет добавлен.", "Внимание", MessageBoxButtons.OK);
                comboBox1.SelectedIndex = -1;
            }
 
            if (comboBox1.SelectedIndex == 2)
            {
                Воздушный_кондиционер form = new Воздушный_кондиционер();
                form.Show();
                comboBox1.SelectedIndex = -1;
 
            }
            if (comboBox1.SelectedIndex == 3)
            {
                Разблокировка_панели1 form = new Разблокировка_панели1();
                form.Show();
                comboBox1.SelectedIndex = -1;
 
            }
            if (comboBox1.SelectedIndex == 4)
            {
                Система_1 form = new Система_1();
                form.Show();
                comboBox1.SelectedIndex = -1;
 
            }
Вот кусок кода главной формы, как только добивил пример из темы выше, комбобокс стал не правильно отображаться, и при нажатии на него выскакивает ошибка о которой сказал выше, без добавления примера , работает корректно, после выбора итема строка пропадает ну как бы как и задумывал, вот решил добавить тултип, не хочет работать.
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
09.07.2018, 20:14 9
Oxis, чему равно e.Index при ошибке?
0
0 / 0 / 0
Регистрация: 29.11.2016
Сообщений: 9
09.07.2018, 20:19 10
При наведении на него курсора, равно 5
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
09.07.2018, 20:26 11
Oxis, загадка, откуда там взялся этот индекс. Максимальный должен быть 4.
1
0 / 0 / 0
Регистрация: 29.11.2016
Сообщений: 9
09.07.2018, 20:29 12
"5" и "Пять" если стереть то пишет 4 =)
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
09.07.2018, 20:39 13
Oxis, я говорю не о содержимом массивов, а об их размере. У тебя добавляется масла из пяти элементов, значит максимальный индекс — 4. Откуда берётся 5?
0
0 / 0 / 0
Регистрация: 29.11.2016
Сообщений: 9
09.07.2018, 20:50 14
Цитата Сообщение от ViterAlex Посмотреть сообщение
Oxis, я говорю не о содержимом массивов, а об их размере. У тебя добавляется масла из пяти элементов, значит максимальный индекс — 4. Откуда берётся 5?
все верно, 5 элементов в комбобоксе, откуда 5 не понятно, может что то с настройками свойств комбобокса? ведь у нее как бы пропадает свойство DropDownList вовремя компиляции, бокс становится прозрачным, со свойством он серый, что то ломается.. видимо
Миниатюры
Tooltip на items'ax combobox   Tooltip на items'ax combobox  
0
0 / 0 / 0
Регистрация: 29.11.2016
Сообщений: 9
09.07.2018, 21:33 15
Создал чистую форму, добавил комбобокс, добавил в него 5 элементов, добавил тултип - все тоже самое ошибка в том же месте Индекс так же равен 5 =(

Добавлено через 27 минут
Разобрался, я вписывал строки в комбобоксе, и получается примером выше добавлял еще 5 элементов, от этого получалась белеберда, удалил строки из конструктора, все заработало.
0
09.07.2018, 21:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.07.2018, 21:33
Помогаю со студенческими работами здесь

Tooltip
Найден был код, отлично все работает. Но есть одно но, когда title заходт за правую или нижнюю...

Многострочный tooltip
При обычном задании подсказки: component.setToolTipText(&quot;...&quot;); она отображается в одну строку,...

Размещение tooltip
нужно вывести под label1 (инфо )отдельно для каждой из 5 кнопок, но работает не так как понимаю ...

Позиционирование ToolTip
Добрый день, есть тултип со стрелкой сбоку, необходимо эту стрелку позиционировать на элемент, к...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru