obi*_*ous 2 arrays powershell datagridview
因此,我试图创建一个自定义Datagridview放入我制作的GUI程序中,但是遇到了一些麻烦。
到目前为止,我有这个:
$form = New-Object System.Windows.Forms.Form
$form.Size = New-Object System.Drawing.Size(900,600)
$dataGridView = New-Object System.Windows.Forms.DataGridView
$dataGridView.Size=New-Object System.Drawing.Size(800,400)
$form.Controls.Add($dataGridView)
$dataGridView.ColumnCount = 4
$dataGridView.ColumnHeadersVisible = $true
$dataGridView.Columns[0].Name = "Process"
$dataGridView.Columns[1].Name = "ID"
$dataGridView.Columns[2].Name = "Description"
$dataGridView.Columns[3].Name = "Memory"
$row1 = get-process -property name | select Name
$rows = @($row1)
foreach ($row in $rows)
{
$dataGridView.Rows.Add($row.name)}
$form.ShowDialog()
Run Code Online (Sandbox Code Playgroud)
我的问题是这样的:
我该如何为不同的属性分配不同的列,因此“ process”列将用于进程名称,“ id”列将用于进程ID,依此类推。
到目前为止,我所要做的就是为一列分配一个输入范围:“进程名称”。
请帮忙!
谢谢
循环所有流程,并按照定义列的顺序添加每个流程属性:
get-process | foreach{
$dataGridView.Rows.Add($_.Name,$_.ID,$_.Description,$_.WorkingSet)
}
Run Code Online (Sandbox Code Playgroud)
您还可以通过选择要显示的属性来动态生成列,每个属性都将成为列名称,并使用网格的DataSource属性和Array列表将对象添加到网格:
$form = New-Object System.Windows.Forms.Form
$form.Size = New-Object System.Drawing.Size(900,600)
$gps = get-process | select Name,ID,Description,@{n='Memory';e={$_.WorkingSet}}
$list = New-Object System.collections.ArrayList
$list.AddRange($gps)
$dataGridView = New-Object System.Windows.Forms.DataGridView -Property @{
Size=New-Object System.Drawing.Size(800,400)
ColumnHeadersVisible = $true
DataSource = $list
}
$form.Controls.Add($dataGridView)
$form.ShowDialog()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23654 次 |
| 最近记录: |