Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9509

C# - ListViewに右クリックメニュー(ContextMenu)を追加する。コードべた書き(Visual Studio不使用)。

$
0
0

画面キャプチャ

image.png

ソースコード

usingSystem;usingSystem.Drawing;usingSystem.Windows.Forms;classListViewContextMenuSample:Form{ListViewlsv;ListViewContextMenuInfocontextMenuInfo;ListViewContextMenuSample(){ClientSize=newSize(500,300);Controls.Add(lsv=newListView(){Dock=DockStyle.Fill,View=View.Details,FullRowSelect=true,GridLines=true,});lsv.Columns.Add("c0",70,HorizontalAlignment.Left);lsv.Columns.Add("c1",70,HorizontalAlignment.Left);lsv.Columns.Add("c2",70,HorizontalAlignment.Left);lsv.Items.Add(newListViewItem(newstring[]{"item0","aa","bb"}));lsv.Items.Add(newListViewItem(newstring[]{"item1","cc","dd"}));vara=newContextMenuStrip();a.Items.Add(newToolStripMenuItem("Show Message",null,ToolStripMenuItem_Click,"Show"));a.Items.Add(newToolStripSeparator());a.Items.Add(newToolStripMenuItem("Copy Text",null,ToolStripMenuItem_Click,"Copy"));a.Opening+=ContextMenuStrip_Opening;lsv.ContextMenuStrip=a;}// 注意:この sender は ContextMenuStrip 型であり、ListViewではない。voidContextMenuStrip_Opening(objectsender,System.ComponentModel.CancelEventArgse){Pointp=lsv.PointToClient(Cursor.Position);ListViewHitTestInfoinfo=lsv.HitTest(p);ListViewItemitem=info.Item;contextMenuInfo=null;if(item==null){e.Cancel=true;}elseif(item.Bounds.Contains(p)){contextMenuInfo=newListViewContextMenuInfo(item,info.SubItem);}else{e.Cancel=true;}}// ToolStripMenuItem.Click イベントvoidToolStripMenuItem_Click(objectsender,EventArgse){varmi=(ToolStripMenuItem)sender;if(contextMenuInfo!=null){if(mi.Name=="Show"){MessageBox.Show(contextMenuInfo.SelectedSubItem.Text);}elseif(mi.Name=="Copy"){ClipboardSetTextWithRetryOnce(contextMenuInfo.SelectedSubItem.Text);}}}voidClipboardSetTextWithRetryOnce(strings){try{Clipboard.SetText(s);}catch(System.Runtime.InteropServices.ExternalException){// クリアに失敗// 1回だけリトライするtry{Clipboard.SetText(s);}catch(System.Runtime.InteropServices.ExternalExceptione2){Console.WriteLine(e2);}}}[STAThread]staticvoidMain(string[]args){Application.Run(newListViewContextMenuSample());}// -----classListViewContextMenuInfo{publicListViewItemSelectedItem{get;privateset;}publicListViewItem.ListViewSubItemSelectedSubItem{get;privateset;}publicListViewContextMenuInfo(ListViewItemselectedItem,ListViewItem.ListViewSubItemselectedSubItem){SelectedItem=selectedItem;SelectedSubItem=selectedSubItem;}}}

参考


Viewing all articles
Browse latest Browse all 9509

Trending Articles