我用以下代碼創建了一個表單:
##Fenster
$Fenster = New-Object System.Windows.Forms.Form #Fenster Form wird erstellt
#$Fenster.WindowState = "Maximized"
$Fenster.AutoSize = $True #Fenster wird auf Autogr?sse gestellt
$Fenster.KeyPreview = $True #Tastendrücke im Fenster k?nnen Aktionen ausl?sen
[System.Windows.Forms.Application]::EnableVisualStyles() #Desgine des Fenster wird umgestellt
$fenster.StartPosition = "Manual" #Startposition wird bestimmt
$fenster.Location = new-object System.Drawing.Size(350,250) #Startposition wird definiert
# Panel für den Teil "Offene CLRAgents"
$TabPanelOCLRA = New-Object Windows.Forms.Panel #Panel für die Tabs und Tabellen wird erstellt
#$TabPanel.dock = "fill"
#$TabPanel.autosize = $true
$TabPanelOCLRA.Location = New-Object System.Drawing.Size(50,50)
$TabPanelOCLRA.Size = New-Object System.Drawing.Size(900,1200)
#$TabPanelOCLRA.BackColor = "red"
$Fenster.controls.Add($TabPanelOCLRA)
# TabControl-für den Teil "Offene CLRAgents-auf dem-TabPanel TabPanelOCLRA
$TabControlOCLRA = New-Object System.Windows.Forms.TabControl
$TabControlOCLRA.Anchor = "Top,Bottom,Left"
#$TabControlOCLRA.Location = New-Object System.Drawing.Size(80, 200)
$TabControlOCLRA.autosize = $true
#TabControlOCLRA.Size = New-Object System.Drawing.Size(500,200)
$TabControlOCLRA.dock = "fill"
#$TabControlOCLRA.BackColor = "Black"
# Die folgende Font-Einstellung gilt für alle Steuerelemente, die mit diesem Tabcontrol verknüpft sind.
$TabControlOCLRA.Font = New-Object System.Drawing.Font("arial",15, [System.Drawing.FontStyle]::bold)
<#$TabControlOCLRA.add_selectedindexChanged({
if($TabControlOCLRA.SelectedIndex -eq 0) {
$BTKillHandles.Enabled = $false
}
else {
$BTKillHandles.Enabled = $True
}
}) #>
$TabPanelOCLRA.Controls.Add($TabControlOCLRA)
# Tabpage für den Teil "Gekillte CLRAgents-auf-dem-TabControl TabControlOCLRA
$TabPageOCLRA = New-Object System.Windows.Forms.TabPage
$TabPageOCLRA.autosize = $true
$TabPageOCLRA.anchor = "Top,Bottom,Left"
$TabPageOCLRA.Text = "Offene CLRAgents"
$TabPageOCLRA.Font = New-Object System.Drawing.Font("arial",14, [System.Drawing.FontStyle]::Regular)
$TabPageOCLRA.UseVisualStyleBackColor = $True
# Listview wird dieser Seite zugefügt.
$TabPageOCLRA.controls.Add($global:ListviewOCLRA)
$TabControlOCLRA.controls.Add($TabPageOCLRA)
# Spalten für ListView
$Spalten =@('Process','Process ID')
# Globale Variable für ListView der Tabpage TabPageOCLRA
$global:ListviewOCLRA = New-Object System.Windows.Forms.ListView
$global:ListviewOCLRA.Clear()
$global:ListviewOCLRA.View = 'Details'
$global:ListviewOCLRA.Top = 20
$global:ListviewOCLRA.autosize = $true
# Ganze Zeile markieren
$global:ListviewOCLRA.FullRowSelect = $true
$global:ListviewOCLRA.Anchor = "Top,Bottom,Left"
$global:ListviewOCLRA.dock = "fill"
#$global:ListviewOCLRA.Font = New-Object System.Drawing.Font("arial",20)
$global:ListviewOCLRA.scrollbars
$global:ListviewOCLRA.Add_Click({
})
# Spalten der globalen Variable Listview in die Tabpage Offene CLRAgents hinzufügen
foreach ($Spalte in $Spalten){
[void]$global:ListviewOCLRA.Columns.Add($Spalte,-2)
}
........
$Fenster.ShowDialog()
我現在正在嘗試向我使用變數“$spalte”創建的 zwei 列添加值。我有兩個全域陣列,其中包含要添加的值。
$Global:addto = @("1","2","3","4","5")
$global:toadd = @("hallo", "there", "i", "am", "nothing")
我想將值 $global:addto 添加到“ProcessID”列,并將 $global:toadd 添加到列“Process”。$global:addto 列的第一行在 $global:toadd 列的第一行中有行程的 processid。我怎樣才能把它們加在一起?
我嘗試了以下操作,但它將行程添加到行程 ID 列中,反之亦然,并且它只添加了兩個全域陣列中的第一行。所有其他行都無法添加。
$Additems = New-Object System.Windows.Forms.ListViewItem($Global:addto)
foreach($to in $toadd){
[void]$Additems.SubItems.Add($to)
}
$global:ListviewOCLRA.Items.AddRange($Additems)
如果您有任何其他方法,如何使用 listview 或其他方法完成此操作。我很想知道。
uj5u.com熱心網友回復:
您的代碼可以使用更具描述性的變數名稱,例如$addto-->$processId和$toadd--> $processName。現在,您正在撰寫很容易出錯的代碼。
此外,我不認為需要將幾乎所有變數的范圍限定為$global:. 如果在任何地方,您應該$script:在腳本塊內使用作用域,否則它們不知道在腳本塊外定義的這些變數。
無論如何,要將值添加到 ListView 中的兩列,您可以這樣做:
$addto = "1","2","3","4","5" # Process ID
$toadd = "hallo", "there", "i", "am", "nothing" # Process Name
for ($i = 0; $i -lt $toadd.Count; $i ) {
$lvi = [System.Windows.Forms.ListViewItem]::new()
$lvi.Text = $toadd[$i]
$lvi.SubItems.Add($addto[$i])
$ListviewOCLRA.Items.Add($lvi)
}
請注意,這僅在兩個陣列具有相同數量的專案時才有效。
另外,為什么這兩個單獨的陣列呢?現在不確定 ProcessId 是否真的屬于該行程名稱。
你沒有說你是如何創建這些陣列的,但我認為這是使用Get-Process. 在這種情況下,最好將 Id 和 Name 放在一個可以使用的單個物件陣列中
$allProcesses = Get-Process | Select-Object Id, Name
然后你可以像這樣填充你的串列視圖:
for ($i = 0; $i -lt $allProcesses.Count; $i ) {
$lvi = [System.Windows.Forms.ListViewItem]::new()
$lvi.Text = $allProcesses[$i].Name
$lvi.SubItems.Add($allProcesses[$i].Id)
$ListviewOCLRA.Items.Add($lvi)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/384889.html
標籤:电源外壳
