В моем случае я хочу использовать скрипт PS для создания WinForm с некоторыми элементами, включая DGV, содержащую 3 столбца (#, Page_Name, shrt). Первая строка должна быть строкой шаблона со значениями по умолчанию (1; индекс; NDX), поэтому я получаю ее из CSV-файла.
Мой код:
$DataGridView1 = New-Object system.Windows.Forms.DataGridView
$DataGridView1.location = New-Object System.Drawing.Point(20,121)
$DataGridView1.Name = "Page-List"
$DataGridView1.AllowUserToAddRowsChanged = $true
$DataGridView1.AllowUserToAddRows = $true
# $DataGridView1.DataBindings
$DataGridView1.width = 363
$DataGridView1.height = 150
$DataGridView1.ColumnCount = 3
$DataGridView1.ColumnHeadersVisible = $true
$DataGridView1.Columns[0].Name = '#'
$DataGridView1.Columns[0].Width = "40"
$DataGridView1.Columns[1].Name = "Page_Name"
$DataGridView1.Columns[1].Width = "205"
$DataGridView1.Columns[2].Name = "shrt"
$DataGridView1.Columns[2].Width = "75"
$DataGridView1.ReadOnly = $false
$DataGridView1.EditMode = "EditOnEnter"
$templateROW = @(Import-Csv -Delimiter ";" "C:\Users\vkons\OneDrive\Документы\PowerShell\Scripts\test\DGV\index.csv" -Header "#", "Page_Name", "shrt" )
$datatable = ($templateROW + $DataGridView1Rows)
$DataGridView1Data = $datatable
foreach ($Row in $DataGridView1Data){
$DataGridView1.Rows.Add($Row.'#', $Row.Page_Name, $Row.shrt)
}
Если пользователь изменит значение ячеек Page_Name в первой строке или заполнит ячейки Page_Name в следующей строке (или rowS) - значения ячеек в столбце # и столбце shrt в редактируемых строках получат значения программно по этому коду части:
$DataGridView1.Add_CellValueChanged({autofill})
Function autofill{
$Numbr = $DataGridView1.CurrentRow.Index+1
$DataGridView1.CurrentRow.Cells[0].value = $Numbr
$Name_Page = $DataGridView1.CurrentRow.Cells[1].value
$preshrt = $Name_Page.ToString($Value) -ireplace "[aoueyi]"
$preshrt = $preshrt.ToUpper()
$shrt = $preshrt[0]+$preshrt[1]+$preshrt[2]
$DataGridView1.CurrentRow.Cells[2].value = $shrt
}
Моей основной целью является получение значений всех ячеек в столбце Page_Name в виде переменной (или массива).
Итак, я попытался добавить следующую строку к функции выше.
$Pages = $Row.Page_Name+$DataGridView1.CurrentRow.Cells[1].value
Но ничего не возвращает... (либо $Row.Page_Name)
Я могу получить значения всех ячеек во всех строках с помощью
$Page_NamesListRows = @($DataGridView1.Rows.Cells.Value)
(К сожалению) он возвращает переменную, состоящую из всех существующих ячеек, а не массива строк.
Но когда я пытаюсь
$Page_Names = $DataGridView1.Rows.Cells[1].Value
or
$Page_Names = $DataGridView1.Columns[1].Cells.Value
чтобы получить только имена страниц, он возвращает ошибку, не может получить значение нулевого массива (либо в случае с @(...) для правой части)
Может ли кто-нибудь ответить... есть какой-либо способ получить значения всех существующих ячеек в столбце Page_Name.
Честно говоря, не имеет значения, будут ли DGVData автоматически редактироваться путем изменения события значения ячеек или нет.
Мне нужно получить только значения столбца Page_Name.
В конце я хочу извиниться за мой английский язык. Имеет довольно низкий уровень. И заранее спасибо модератору за исправление моих ошибок.