MouseEventArgs с нежелательным пространством имен - PullRequest
0 голосов
/ 04 сентября 2018

Конечная цель - добавить подсказки к объектам в ListBox. Я нашел несколько примеров этого, а именно:

private void OnListBoxMouseMove ( object sender, MouseEventArgs e )
{
    string strTip = "";

    // Get the item
    int nIdx = listBox1.IndexFromPoint(e.Location);

    if ((nIdx >= 0) && (nIdx < listBox1.Items.Count))
        strTip = listBox1.Items[nIdx].ToString();

    toolTip1.SetToolTip(listBox1, strTip);
}

Тем не менее, моя страница помещает это как System.Windows.Input.MouseEventArgs объект вместо Systems.Windows.Forms, поэтому e.Location не существует.

Есть ли способ получить это событие из правильного пространства имен? Еще одним фактором может быть то, что ListBox находится в пространстве имен System.Windows.Controls?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Чтобы достичь конечной цели, добавив всплывающие подсказки для каждого отдельного элемента в списке, я просто добавил обработчик событий в список в xmal как таковой.

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
         <EventSetter Event="MouseEnter" Handler="mouseEnterMethodName"></EventSetter>
    </Style>
</ListBoxItemTemplate>

Затем в cs просто приведите отправителя к ListBoxItem, а затем просто установите для ListBoxItem.ToolTip все, что вы хотите. Было чрезвычайно полезно узнать, что WPF и winforms работают в разных пространствах имен. Спасибо всем!

0 голосов
/ 04 сентября 2018

Я полагаю, что вы используете WPF, и вот ответ, который вы ищете:

Отображение текста всплывающей подсказки в элементе списка

Текст из статьи:

Привет ,, если вы хотите отобразить всплывающую подсказку по отдельным элементам в ListBox, это простой и быстрый способ. Он не требует пользовательских элементов управления и довольно мал в коде.

Сначала создайте метод для обработки событий перемещения мыши, затем подключите его к событию MouseMove объекта ListBox. Вам также понадобится объект ToolTip в качестве переменной-члена формы. Код, необходимый для создания и обновления всплывающей подсказки:

private void onMouseMove(object sender, MouseEventArgs e)
{
    if(sender is ListBox)
    {      
        ListBox listBox = (ListBox)sender;
        Point point = new Point(e.X, e.Y);
        int hoverIndex = listBox.IndexFromPoint(point);
        if(hoverIndex >= 0 && hoverIndex < listBox.Items.Count)
        {
            tt.SetToolTip(listBox, listBox.Items[hoverIndex].ToString());
        } 
    }    
}

Для получения дополнительной информации, пожалуйста, проверьте конец этой статьи

Для второго вопроса вы можете использовать ToolTip.AutomaticDelay Property .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...