データグリッドを持つフォームがあります。私ができることをしたいのは、セルを右クリックしたときにマウスの横にドロップダウンメニューが表示されるようにすることです。私は、メニューからオプションを選択していくつかのものを実行できる必要があります。DataGridviewセルを右クリックしてコンテキストメニューを表示する方法
登録するには右クリックイベントが表示されますが、コンテキストメニューは表示されません。 以下のコードのメニューに、セルをコピーするオプションが表示されます。ここで
[void] [System.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”)
[void] [System.Reflection.Assembly]::LoadWithPartialName(“System.Drawing”)
$form = New-Object System.Windows.Forms.Form
$form.Size = New-Object System.Drawing.Size(1040,518)
$form.KeyPreview = $true
$form.StartPosition = 'centerscreen'
$form.BackColor = 'MidnightBlue'
$form.Add_KeyDown({if($_.KeyCode -eq "Escape"){$form.Close()}})
$form.Text = "VIOC Toolkit 5.4"
$form.Icon = [system.drawing.icon]::ExtractAssociatedIcon($PSHOME + "\powershell_ise.exe")
$form.MinimumSize = New-Object System.Drawing.Size(1040,525)
$DataGrid1 = New-Object System.Windows.Forms.DataGridView
$DataGrid1.Location = New-Object System.Drawing.Size(298,29)
$DataGrid1.Dock = "Fill"
$DataGrid1.BorderStyle = 'FixedSingle'
$DataGrid1.DefaultCellStyle.Font = New-Object System.Drawing.Font($dgfont,$dgfontSize)
$DataGrid1.AlternatingRowsDefaultCellStyle.BackColor = 'LightGray'
$DataGrid1.AllowUserToAddRows = $false
$DataGrid1.RowHeadersVisible = $false
$DataGrid1.BackgroundColor = "White"
$DataGrid1.Name="DataGrid1"
$DataGrid1.Text="DataGrid1"
$DataGrid1.ColumnCount = 3
$DataGrid1.Columns[0].Name = 'one'
$DataGrid1.Columns[1].Name = 'two'
$DataGrid1.Columns[2].Name = 'three'
$DataGrid1.Rows.add(@('a', 'b', 'c'))
$DataGrid1.Rows.add(@('d', 'e', 'f'))
#*************************************************************#
$DataGrid1.add_CellMouseClick({
if($_.button -eq 'Right'){
ContextMenu($DataGrid1)
}
})
function ContextMenu($Grid){
#create the context menu
$menu = New-Object System.Windows.Forms.ContextMenu
$CopyMenuItem = New-Object System.Windows.Forms.MenuItem
$copymenuItem.text = 'copy'
$copymenuItem.add_Click({write-host 'clicked copy'})
$menu.MenuItems.AddRange(@($CopyMenuItem))
}
#***************************************************************#
$form.Controls.Add($DataGrid1)
$form.ShowDialog() | out-null
をあなたの代わりに新しいコンテキストメニューを作成する 'DataGridViews'自身' ContextMenuStrip'を使用して考えがあります。 – JohnG
長い目で見れば、私はメニューのコピーを持っていませんが、それは簡単な例です。メニューは私の好みに向いています。 – CuriousOne
コンテキストメニューはコンテキストメニューです....それについて「カスタム」とは何ですか? – JohnG