listView を右クリックするとポップアップする contextMenu を作成する方法を知っています。 itemを右クリックするとポップアップするようにしたいのです。チャット サーバーとクライアントを作成しようとしていますが、現在... 接続されているクライアントのアイテムを右クリックしたときにクライアント情報を表示したいと考えています。
これどうやってするの?
private void listView1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
var focusedItem = listView1.FocusedItem;
if (focusedItem != null && focusedItem.Bounds.Contains(e.Location))
{
contextMenuStrip1.Show(Cursor.Position);
}
}
}
接続されたクライアント情報をcontextMenuStrip1に入れることができます。アイテムを右クリックすると、そのcontextMenuStrip1からの情報を表示できます。
ListViews コンテキスト メニューを使用する必要がありますが、右クリックした ListView アイテムに応じて変更します。
private void listView1_MouseDown(object sender, MouseEventArgs e)
{
bool match = false;
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
foreach (ListViewItem item in listView1.Items)
{
if (item.Bounds.Contains(new Point(e.X, e.Y)))
{
MenuItem[] mi = new MenuItem[] { new MenuItem("Hello"), new MenuItem("World"), new MenuItem(item.Name) };
listView1.ContextMenu = new ContextMenu(mi);
match = true;
break;
}
}
if (match)
{
listView1.ContextMenu.Show(listView1, new Point(e.X, e.Y));
}
else
{
//Show listViews context menu
}
}
}
を使用して選択したアイテムを取得し、その選択したアイテムに関連するコンテキストメニューを提供する場合にトリガーMouseDown
またはMouseUp
イベントを実行できます。ListView
MouseButton.Right
ListView.Hittest
より明確な情報については、このリンクからアクセスできます
トピックはかなり古いですが、参考のために私の解決策を残します。
xaml ListView 定義で、コンテキスト メニューを配置します。
<ListView Name="m_list" >
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Header="menuItem1" Click="ContextMenuItem1Clicked" />
<MenuItem Header="menuItem2" Click="ContextMenuItem2Clicked" />
</ContextMenu>
</ListView.ContextMenu>
...
</ListView>
ここで、コードで、それぞれのメニュー項目をクリックすると起動する 2 つのイベント ハンドラーを定義します。
private void ContextMenuItem1Clicked(object sender, RoutedEventArgs e)
{
// handle the event for the selected ListViewItem accessing it by
ListViewItem selected_lvi = this.m_list.SelectedItem as ListViewItem;
}
private void ContextMenuItem2Clicked(object sender, RoutedEventArgs e)
{
// handle the event for the selected ListViewItem accessing it by
ListViewItem selected_lvi = this.m_list.SelectedItem as ListViewItem;
}
ListView はオブジェクトに対応できます。つまり、selected_lvi をオブジェクトの型にすることができます。キャストするだけで適切なタイプになります。
これが役立つことを願っています。
よろしくお願いします、
マイク