Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Andrei72
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 60
1

Всплывающие подсказки в ComboBox

06.02.2012, 07:42. Просмотров 2860. Ответов 10
Метки нет (Все метки)

Уважаемые программисты, помоги пожайлуста!

Необходимы всплывающие подсказки в ComboBox. А именно когда открывается список нужны подсказки разные для каждой строки списка.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2012, 07:42
Ответы с готовыми решениями:

Всплывающие подсказки собственного оформления
Всем привет. Нужно сделать что-то типа всплывающей подсказки, чтобы при подведении на определенный...

Реализовать всплывающие подсказки для элементов управления
Доброго времени суток, господа программисты! Подскажите. На форме есть рисунок. Можно ли сделать...

Всплывающие подсказки
Возможно сделать привязку по атрибуту? .tooltip:hover:after{ background: #333; ...

всплывающие подсказки
Сижу на Win8, пользуюсь Firefox. Уже задолбала до предела проблема - когда должна появляться...

Всплывающие подсказки
Подскажите пожалуйста как реализовать всплывающие подсказки при наведении на компонент , например...

10
nio
5977 / 3383 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
06.02.2012, 09:50 2
Andrei72, используй ToolTip http://msdn.microsoft.com/ru-ru/libr...s.tooltip.aspx
Только придется "вручную" высчитывать, над какой строкой находится курсор и отображать подсказку.
0
Andrei72
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 60
06.02.2012, 12:42  [ТС] 3
А как тогда получить положение курсора относительно формы (внутри нее) а не всего экрана?

Добавлено через 6 минут
Возможно ли так: узнать на каком из пунктов списка ComboBox стоит курсор - путем определения у кого фокус? Тоесть у кого фокус - там и курсор.

И как это сделать
0
Andrei72
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 60
08.02.2012, 11:42  [ТС] 4
Неужели ни кто не знает как это сделать?

Помогите, пожайлуста!
0
08.02.2012, 11:42
Eugene22
_
2352 / 1225 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
08.02.2012, 18:16 5
Andrei72, так сойдет?
0
Вложения
Тип файла: zip Combobox.zip (10.3 Кб, 132 просмотров)
Andrei72
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 60
08.02.2012, 19:10  [ТС] 6
Да! это именно то что нужно!
0
Eugene22
_
2352 / 1225 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
08.02.2012, 19:26 7
Andrei72, только это на wpf, а не на winforms. На winforms такие вещи так просто не сделаешь - там бы пришлось создавать свой элемент управления, да еще использовать WinAPI. А на WPF такие вещи легко делаются.
Если интересно, код элемента Combobox в разметке XAML следующий
XML
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
<ComboBox Height="25" Width="150" VerticalAlignment="Top"  HorizontalAlignment="Center">
                
            <ComboBoxItem IsSelected="True">
                <ComboBoxItem.ToolTip>
                    <ToolTip Background="#60AA4030" Foreground="White" HasDropShadow="False" 
                    Placement="Relative" HorizontalOffset="20" VerticalOffset="10">
                        <StackPanel>
                            <TextBlock>"Победы на чемпионатах мира:</TextBlock>
                            <TextBlock>5 раз - 1958, 1962, 1970, 1994, 2002</TextBlock>
                        </StackPanel>
                    </ToolTip>
                </ComboBoxItem.ToolTip>
                <ComboBoxItem.Content>
                    <TextBlock>Бразилия</TextBlock>
                </ComboBoxItem.Content>
            </ComboBoxItem>
            <ComboBoxItem>
                <ComboBoxItem.ToolTip>
                    <ToolTip Background="#60AA4030" Foreground="White" HasDropShadow="False" 
                    Placement="Relative" HorizontalOffset="30" VerticalOffset="10">
                        <StackPanel>
                            <TextBlock>"Победы на чемпионатах мира:</TextBlock>
                            <TextBlock>4 раза - 1934, 1938, 1982, 2006</TextBlock>
                        </StackPanel>
                    </ToolTip>
                </ComboBoxItem.ToolTip>
                <ComboBoxItem.Content>
                    <TextBlock>Италия</TextBlock>
                </ComboBoxItem.Content>
            </ComboBoxItem>
            <ComboBoxItem>
                <ComboBoxItem.ToolTip>
                    <ToolTip Background="#60AA4030" Foreground="White" HasDropShadow="False" 
                    Placement="Relative" HorizontalOffset="30" VerticalOffset="10">
                        <StackPanel>
                            <TextBlock>"Победы на чемпионатах мира:</TextBlock>
                            <TextBlock>3 раза - 1954, 1974, 1990</TextBlock>
                        </StackPanel>
                    </ToolTip>
                </ComboBoxItem.ToolTip>
                <ComboBoxItem.Content>
                    <TextBlock>Германия</TextBlock>
                </ComboBoxItem.Content>
            </ComboBoxItem>
        </ComboBox>
1
Andrei72
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 60
09.02.2012, 06:33  [ТС] 8
Спасибо, но думал возможно и на winforms такое сделать, очень жаль.

Добавлено через 10 часов 47 минут
По поводу этого вопроса есть мнение?
Цитата Сообщение от Andrei72 Посмотреть сообщение
А как тогда получить положение курсора относительно формы (внутри нее) а не всего экрана?
0
Andrei72
0 / 0 / 0
Регистрация: 02.02.2012
Сообщений: 60
20.10.2012, 20:14  [ТС] 9
Приходится снова обращаться к этому вопросу. Необходимо сделать всплывающие подсказки в списке ComboBox, так как ответа так и не нашлось.
0
fonarshik
0 / 0 / 0
Регистрация: 08.11.2017
Сообщений: 2
07.11.2012, 08:13 10
День добрый!
Если еще интересует, я реализую всплывающую подсказку в ComboBox следующим образом:

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Me.ComboBox.DrawMode = DrawMode.OwnerDrawFixed 
 
 Private Sub ComboBox_DrawItem(sender As Object, e As DrawItemEventArgs) Handles ComboBox.DrawItem
      
        Dim text As String = Me.ComboBox.GetItemText(ComboBox.Items(e.Index))
        e.DrawBackground()
        Using br As New SolidBrush(e.ForeColor)
            e.Graphics.DrawString(text, e.Font, br, e.Bounds)
        End Using
 
        Me.ToolTip1.Show(text, ComboBox, e.Bounds.Right, e.Bounds.Bottom)
        e.DrawFocusRectangle()
    End Sub
 
 Private Sub Form_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
        Me.ToolTip1.Hide(ComboBox)
    End Sub
0
fox1001
24 / 24 / 8
Регистрация: 30.04.2012
Сообщений: 95
07.08.2013, 12:24 11
fonarshik спасибо огромное. опираясь на ваш пример сделал так:

Кликните здесь для просмотра всего текста
vb.net
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
        MyCombo.DrawMode = DrawMode.OwnerDrawFixed 
    Dim текст_подсказки As String = "" 'хранит идентификатор (наименование) сортамента из списка MyCombo, если текст идентификатора не умещается в MyCombo, для последующего отображения в подсказке
    Dim список_раскрыт As Boolean = False   'показывает в каком состоянии сейчас находится список сортаментов (MyCombo). False - список свернут, True - список раскрыт (развернут)
        
    Private Sub MyCombo_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyCombo.DropDown
        список_раскрыт = True
    End Sub
 
    Private Sub MyCombo_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles MyCombo.DrawItem
        If список_раскрыт = True Then
            текст_подсказки = MyCombo.GetItemText(MyCombo.Items(e.Index))
            e.DrawBackground()
            Using br As New SolidBrush(Color.Teal)
                e.Graphics.DrawString(текст_подсказки, e.Font, br, e.Bounds)
            End Using
 
            ''Me.ToolTip1.Show(text, MyCombo, e.Bounds.Right, e.Bounds.Bottom)
            ''ToolTip2.ToolTipTitle = "КОЛБАСА"
            If e.Graphics.MeasureString(текст_подсказки, MyCombo.Font).Width > MyCombo.Width And текст_подсказки <> "" Then
                Me.ToolTip2.Show(vbCrLf & текст_подсказки & vbCrLf & " ", MyCombo, 0, e.Bounds.Bottom + 20)
            Else
                Me.ToolTip2.Hide(MyCombo)
            End If
            e.DrawFocusRectangle()
        Else
            ToolTip2.Hide(MyCombo)
        End If
    End Sub
 
    Private Sub MyCombo_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyCombo.DropDownClosed
        список_раскрыт = False
    End Sub
0
07.08.2013, 12:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2013, 12:24

Всплывающие подсказки
Доброго времени суток!) Задача следующая, при наведении на слово в посте нужно реализовать...

всплывающие подсказки
мне нужно реализовать всплывающие подсказки при вводе неправильных данных в текстовое поле или...

Всплывающие подсказки
Подскажите каким образом возможно реализовать подобные всплывающие подсказки.


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

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

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