2017-09-02 10 views
0

チェックボックス列を作成し、メインデータグリッドの最初の列として挿入し、チェックボックスをオンにするために行をループします。基本的に、私がしようとしているのは、アプリケーションの起動時にデフォルトでチェックされるチェックボックスを追加することです。DataGridViewがアプリケーションの起動時にチェックボックスに変更を表示しない

問題は、アプリケーションを起動するとチェックボックスが変更されないことです。私はそれが効果を発揮するかどうかを見るために、下にToolTipのテキストを追加しましたが、そこに運がありません。

同じコードをトリガするイベント(同じメソッドを呼び出すイベント)も追加しました。チェックボックスをチェックしてグリッドをリフレッシュします。

DataGridViewCheckBoxColumn importSelectionColumn = new DataGridViewCheckBoxColumn(); 
importSelectionColumn.Name = "dataSelection"; 
importSelectionColumn.DisplayIndex = 0; 
importSelectionColumn.HeaderText = "\u2611"; 
importSelectionColumn.Width = 35; 
importSelectionColumn.Visible = true; 
importSelectionColumn.FalseValue = false; 
importSelectionColumn.TrueValue = true; 
importSelectionColumn.HeaderCell.Style.Font = new Font(FontFamily.GenericSansSerif, 16f); 

// Add column to grid: 
mainDataGrid.Columns.Insert(0, importSelectionColumn); 

// Set checkbox to true for all rows: 
foreach (DataGridViewRow row in this.mainDataGrid.Rows) 
{ 
    row.Cells["dataSelection"].Value = true; 

    // Adding this just to see whether it's set when application starts. 
    row.Cells["dataSelection"].ToolTipText = "Testing"; 
} 

mainDataGrid.RefreshEdit(); 
mainDataGrid.Refresh(); 
+0

あなたはこのコードを実行した後、あなたの 'mainDataGrid'に影響を与えるイベントがあります:

は、ページ上のコードの下に使用してチェックしてみてください? –

+0

はい、クリックするとプロセスが非同期で起動するボタンがあります。また、グリッドは効果的に更新され、各行はプロセスを完了すると更新されます。 –

+0

あなたもそれを投稿して、それを確認することができますか? –

答えて

1

状態を変更するコードがあまりにも早く実行されていないことを確認してください。 すべてのコントロールがロードされ、作業の準備ができたら、コンテナフォームのLoadedイベントの後に実行する必要があります。

+0

私もそのことを考えていましたが、Program.csで 'Application.Run(mainForm); 'を使ってアプリケーションを実行した後、同じメソッドを再度実行しようとしました。 –

+0

これは、フォームへのロードイベントを追加し、ここからチェックを行います。ありがとう! –

0

mainDataGridにチェックボックスコントロールを追加することは、ページロードイベントの代わりにDataBoundイベントで実行できます。

protected void mainDataGrid_DataBound(object sender, EventArgs e) 
{ 
    foreach (GridViewRow objRow in mainDataGrid.Rows) 
    { 
     TableCell tcCheckCell = new TableCell(); 
     CheckBox chkCheckBox = new CheckBox(); 
     tcCheckCell.Controls.Add(chkCheckBox); 
     objRow.Cells.AddAt(0, tcCheckCell); 
    } 
} 
関連する問題