Найдите узел нажатым под контекстным меню

UAParser является одной из легких JavaScript-библиотек для идентификации браузера, движка, ОС, ЦП и типа / модели устройства из строки userAgent.

Доступен CDN. Здесь я привел пример кода для обнаружения браузера с помощью UAParser.










Теперь вы можете использовать значение result.browser для условной программирования вашей страницы.

Source Tutorial: Как обнаружить браузер, движок, ОС, ЦП и устройство с помощью JavaScript?

69
задан Sebastian Negraszus 23 March 2017 в 11:41
поделиться

3 ответа

Можно добавить событие нажатия мыши к TreeView, затем выбрать корректное использование узла GetNodeAt, учитывая координаты мыши, обеспеченные MouseEventArgs.

void treeView1MouseUp(object sender, MouseEventArgs e)
{
    if(e.Button == MouseButtons.Right)
    {
        // Select the clicked node
        treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y);

        if(treeView1.SelectedNode != null)
        {
            myContextMenuStrip.Show(treeView1, e.Location);
        }
    }
}
91
ответ дан Jeremy Thompson 24 November 2019 в 13:47
поделиться

Я нахожу стандартные окна treeview поведением выбора поведения для раздражения. Например, при использовании Проводника и щелчка правой кнопкой по узлу и Свойствам хита это выделяет узел и показывает диалоговое окно свойств для узла, на который Вы нажали. Но когда Вы возвращаетесь из диалогового окна, выделенный узел был узлом, ранее выбрал/выделил, прежде чем Вы сделали щелчок правой кнопкой. Я нахожу, что это вызывает проблемы удобства использования, потому что я навсегда смущаюсь на том, действовал ли я на правильный узел.

Так во многих наших графический интерфейсах пользователя, мы изменяем выбранный древовидный узел при щелчке правой кнопкой так, чтобы не было никакого беспорядка. Это не может совпасть со стандартом iwndos приложение как Проводник (и я склонен сильно моделировать наше поведение GUI после стандартных приложений окна по причинам usabiltiy), я полагаю, что этот случай исключения приводит к намного большему количеству применимых деревьев.

Вот некоторый код, который изменяет выбор во время щелчка правой кнопкой:

  private void tree_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
  {
     // only need to change selected note during right-click - otherwise tree does
     // fine by itself
     if ( e.Button == MouseButtons.Right )
     {         
        Point pt = new Point( e.X, e.Y );
        tree.PointToClient( pt );

        TreeNode Node = tree.GetNodeAt( pt );
        if ( Node != null )
        {
           if ( Node.Bounds.Contains( pt ) )
           {
              tree.SelectedNode = Node;
              ResetContextMenu();
              contextMenuTree.Show( tree, pt );
           }
        }
     }
  }
12
ответ дан solarc 24 November 2019 в 13:47
поделиться

Если Вы хотите, чтобы контекстное меню зависело от выбранного пункта, Вы - лучшее перемещение, я думаю, должен использовать код Jonesinator для выбора нажатого объекта. Ваше содержание контекстного меню может тогда зависеть от выбранного пункта.

Выбор объекта сначала в противоположность просто использованию его для контекстного меню дает несколько преимуществ. Прежде всего, у пользователя есть визуальный признак, относительно которого он нажал и таким образом с каким объектом меню связано. Второе - то, что этот путь это - адская партия, легче сохранять совместимым с другими методами вызова контекстного меню (например, сочетания клавиш).

0
ответ дан ICR 24 November 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: