右键单击select powershell中datagridview控件中的一行
Right Click to select a row in datagridview control in powershell
我正在使用 WPF 控件的 Powershell 开发一个项目。
我有一个数据网格视图,其中只能 select 编辑一整行。还有一个上下文菜单条在数据网格视图中也能正常工作。
我的问题是我想要一个右键单击鼠标事件到 select 它被单击的行并显示上下文菜单条。所以用户毫无疑问点击了什么。目前,selected 行不会因右键单击而改变。
我找到了很多示例,但可以使用一些指导来转换它们以便在 powershell 中使用。
一旦我记下了这个,我想为每个上下文菜单分配操作 selections
谢谢!
linked answer 中的代码可以转换为 PowerShell,如下所示。
事件处理程序注册
this.MyDataGridView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MyDataGridView_MouseDown);
this.DeleteRow.Click += new System.EventHandler(this.DeleteRow_Click);
PowerShell 不支持 +=
注册事件处理程序,但您还有两个其他选择。要么调用 C# 最终将 +=
转换为的特别命名的方法——它们都将具有 add_<EventName>
:
的形式
$dataGridView = [System.Windows.Forms.DataGridView]::new()
# ...
$dataGridView.add_MouseDown($dgvMouseHandler)
或者,使用 Register-ObjectEvent
cmdlet 让 PowerShell 为您处理注册:
Register-ObjectEvent $dataGridView -EventName MouseDown -Action $dgvMouseHandler
事件参数
private void MyDataGridView_MouseDown(object sender, MouseEventArgs e) {
if(e.Button == MouseButtons.Right)
{
var hti = MyDataGridView.HitTest(e.X, e.Y);
// ...
为了使用事件处理程序参数,您可以在脚本块中声明由 handler delegate 定义的参数:
$dgvMouseHandler = {
param($sender,[System.Windows.Forms.MouseEventArgs]$e)
# now you can dereference `$e.X` like in the C# example
}
或利用 $EventArgs
automatic variable:
$dgvMouseHandler = {
# `$EventArgs.X` will also do
}
我正在使用 WPF 控件的 Powershell 开发一个项目。
我有一个数据网格视图,其中只能 select 编辑一整行。还有一个上下文菜单条在数据网格视图中也能正常工作。
我的问题是我想要一个右键单击鼠标事件到 select 它被单击的行并显示上下文菜单条。所以用户毫无疑问点击了什么。目前,selected 行不会因右键单击而改变。
我找到了很多示例,但可以使用一些指导来转换它们以便在 powershell 中使用。
一旦我记下了这个,我想为每个上下文菜单分配操作 selections 谢谢!
linked answer 中的代码可以转换为 PowerShell,如下所示。
事件处理程序注册
this.MyDataGridView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MyDataGridView_MouseDown); this.DeleteRow.Click += new System.EventHandler(this.DeleteRow_Click);
PowerShell 不支持 +=
注册事件处理程序,但您还有两个其他选择。要么调用 C# 最终将 +=
转换为的特别命名的方法——它们都将具有 add_<EventName>
:
$dataGridView = [System.Windows.Forms.DataGridView]::new()
# ...
$dataGridView.add_MouseDown($dgvMouseHandler)
或者,使用 Register-ObjectEvent
cmdlet 让 PowerShell 为您处理注册:
Register-ObjectEvent $dataGridView -EventName MouseDown -Action $dgvMouseHandler
事件参数
private void MyDataGridView_MouseDown(object sender, MouseEventArgs e) { if(e.Button == MouseButtons.Right) { var hti = MyDataGridView.HitTest(e.X, e.Y); // ...
为了使用事件处理程序参数,您可以在脚本块中声明由 handler delegate 定义的参数:
$dgvMouseHandler = {
param($sender,[System.Windows.Forms.MouseEventArgs]$e)
# now you can dereference `$e.X` like in the C# example
}
或利用 $EventArgs
automatic variable:
$dgvMouseHandler = {
# `$EventArgs.X` will also do
}