2017-04-19 14 views
1

私は以下のdatagridviewで作業しています。私はヘッダー名をエクスポートしようとしています。Datagridview Export HeaderText

このコードを実行してエクスポートを実行すると、ユーザーは最初に(モデルまで)表示できる列ヘッダーのみが出力されますが、 'バージョン'または '最後に再起動'は出力されません。エクスポートを押す前に右にスクロールすると、すべての列名が表示されます。

[void] [System.Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”) 
[void] [System.Reflection.Assembly]::LoadWithPartialName(“System.Drawing”) 
$form = New-Object System.Windows.Forms.Form 
$form.Size = New-Object System.Drawing.Size(1040,518) 
$form.KeyPreview = $true 
$form.StartPosition = ‘centerscreen’ 
$form.BackColor = 'MidnightBlue' 
$form.Add_KeyDown({if($_.KeyCode -eq "Escape"){$form.Close()}}) 
$form.Text = "Dialog Box 3.4" 
$form.Icon = [system.drawing.icon]::ExtractAssociatedIcon($PSHOME + "\powershell_ise.exe") 
$form.MinimumSize = New-Object System.Drawing.Size(1040,518) 

$buttonPanel4 = New-Object Windows.Forms.Panel 
$buttonPanel4.Size = New-Object Drawing.Size @(290,70) 
$buttonPanel4.Dock = "left" 
$buttonPanel4.BackColor = 'MidnightBlue' 

$DataGrid = New-Object System.Windows.Forms.DataGridView 
$DataGrid.Location = New-Object System.Drawing.Size(298,29) 
$DataGrid.Dock = "Fill" 
$DataGrid.BorderStyle = ‘FixedSingle’ 
$DataGrid.ColumnHeadersDefaultCellStyle.Font = New-Object System.Drawing.Font(“segoe UI”,9.25) 
$DataGrid.DefaultCellStyle.Font = New-Object System.Drawing.Font(“segoe UI”,9.25) 
$DataGrid.AllowUserToAddRows = $false 
$DataGrid.RowHeadersVisible = $false 
$DataGrid.BackgroundColor = "White" 

$DataGrid.ColumnCount = 10 
$DataGrid.Columns[0].Name = ‘Machine’ 
$DataGrid.Columns[1].Name = ‘OperatingSystem’ 
$DataGrid.Columns[2].Name = ‘ServicePack’ 
$DataGrid.Columns[3].Name = ‘Architecture’ 
$DataGrid.Columns[4].Name = ‘Domain’ 
$DataGrid.Columns[5].Name = ‘PhysicalMemory’ 
$DataGrid.Columns[6].Name = ‘Manufacturer’ 
$DataGrid.Columns[7].Name = ‘Model’ 
$DataGrid.Columns[8].Name = ‘Version’ 
$DataGrid.Columns[9].Name = ‘Last Rebooted’ 
$DataGrid.Columns[9].Width = '140' 

$Exportbutton = New-Object System.Windows.Forms.Button 
$Exportbutton.Location = New-Object System.Drawing.Size(9,350) 
$Exportbutton.Size = New-Object System.Drawing.Size(85,23) 
$Exportbutton.Text = “Export-CSV” 
$Exportbutton.BackColor = ‘LightGray’ 
$Exportbutton.UseVisualStyleBackColor = $true 
$Exportbutton.Font = New-Object System.Drawing.Font(“segoe UI”,9) 
$Exportbutton.Add_Click({ 
    $columnNames = $null 
    $columnNames = $DataGrid.Columns[0].HeaderText 
    for($i = 1; $i -lt $DataGrid.ColumnCount;$i++){ 
     $columnNames += ",$($DataGrid.Columns[$i].HeaderText)" 
     write-host $($DataGrid.Columns[$i].HeaderText) -ForegroundColor Magenta 
    } 
    write-host $columnNames -foregroundcolor cyan 
}) 

$buttonPanel4.Controls.Add($Exportbutton) 
$form.Controls.Add($DataGrid) 
$form.Controls.Add($buttonPanel4) 
$form.ShowDialog() | out-null 

これが発生し、どのように私は右の最初にスクロールせずにすべての列名をエクスポートすることができた理由はありますか?

+1

変数 '$ buttonPanel4'は何ですか? – pandemic

+0

申し訳ありませんが、私はこれを私の大きなプログラムから切り離し、パネルを忘れてしまいました。それは左側に、右側にはデータグリッドがあります。 – CuriousOne

答えて

0

として@pandemicポイントアウト、$buttonPanel4が示さ/定義されていない、また、それはあなたがそれのパネルが存在する場合は、このボタンをカバーするFillDataGrid.Dockプロパティを設定している表示されます。

ヘッダーテキストがヘッダーがデータグリッドに表示されるまで、ヘッダーテキストが空の文字列を返す理由についての回答はありません。私はそれがHeaderTextプロパティが設定されていないためですと推測しています。 HeaderTextのプロパティが設定されていない場合は、必要に応じてデフォルトの列Nameになります。 Nameプロパティと同じように各列のHeaderTextプロパティを設定すると、この問題は発生しません。

したがって、各列をHeaderTextに設定するか、Nameプロパティを下のコードに示すように設定します。

私の代わりに、ヘッダーテキストの列名を使用するには、以下のコードを変更し、正常に動作するように見えます。また、私は、カンマがこのことができますインデックス0・ホープでループを開始する$columnNames文字列変数に挿入する方法を変更しました。

$Exportbutton.Add_Click({ 
    $columnNames = $null 
    for($i = 0; $i -lt $DataGrid.ColumnCount;$i++){ 
    $columnNames += "$($DataGrid.Columns[$i].Name)" 
    if ($i -lt $DataGrid.ColumnCount - 1) { 
     $columnNames += "," 
    } 
    write-host $($DataGrid.Columns[$i].Name) -ForegroundColor Magenta 
    } 
    write-host $columnNames -foregroundcolor cyan 
}) 
+0

'参照することで、代わりにHeaderText''のNAME'が正しかったことをあなたの仮定。私がそれを変更すると、必要なときにすべての列名を取得できます。あなたのお返事ありがとうございます! – CuriousOne