我有一个带有datagrid的表单。我想要做的是在鼠标右键单击单元格时,鼠标旁边会出现一个下拉菜单。我需要能够从菜单中选择一个选项并运行一些东西。如何让一个contextmenu出现在右键单击datagridview单元格
我可以通过右键点击事件来注册,但是contextmenu不会出现。 下面代码中的菜单应该显示复制单元格的选项。
[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