В powershell внутри foreach я генерирую несколько кнопок, и каждая кнопка должна вызывать функцию, передающую ее индекс в качестве аргумента, но кажется, что вы не можете передать индекс в функцию.
$RacesButtons = @()
for( $i=0; $i -lt $numRaces; $i++ ){
$button = New-Object System.Windows.Forms.Button
$RacesButtons = $RacesButtons + $button
$RacesButtons[$i].Text = "$($RacesFiles[$i])"
$RacesButtons[$i].Add_Click({NewNpc $i})
$Form.Controls.Add($RacesButtons[$i])
}
Это должно передайте значение от 0 до 8 ($ numRaces равно 9), но вместо этого передается значение NULL, и я получаю эту ошибку.
Indexing operation failed. The index value of the matrix is null.
In C:\Users\Marco\Desktop\Music&Npc\Music&Npc.ps1:137 car:2
+ $NpcDetailsTextBox.Text = $RacesFiles[$race]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArrayIndex
«NpcDetailsTextBox» - это текстовое поле, а «RacesFiles» - это массив. Странно то, что текст каждой кнопки (установленной с помощью $ RacesButtons [$ i] .Text = "$ ($ RacesFiles [$ i])" перед установкой add_click) является правильным.
Я получаю та же ошибка с
$RacesButtons[$i].Add_Click({NewNpc $($i)})
Но если я использую один из этих
$RacesButtons[$i].Add_Click({NewNpc "$i"})
$RacesButtons[$i].Add_Click({NewNpc "$($i)"})
, он не возвращает ошибку, но каждая кнопка передает 0 функции.
Любые идеи о том, как я могу решить это? Заранее спасибо