12

4列のデータグリッドビューがあります。最初の2列はコンボボックス列、3列目はテキストボックス列、4列目はボタン列です。フォームの読み込みでは、データグリッドのボタン列全体を無効にする必要があります。その後、最初の3列を選択する必要があります。これを保存した後、これらの最初の3列をデータベースに保存すると、特定の行のボタン列が有効になります。最初の3列は、ボタンをクリックしてデータベースに保存する必要があります。私が何日もこの問題に直面したのを手伝ってくださいここに私が使用したコードがあります

private void SATAddTemplate_Load(object sender, EventArgs e)
{
           foreach (DataGridViewRow row in datagrdADDTEMP.Rows)
           {

               DataGridViewButtonCell btn = (DataGridViewButtonCell)row.Cells[3];
               btn.ReadOnly = true;
           }
}
 private void btnSaveSettings_Click(object sender, EventArgs e)
     {
           foreach (DataGridViewRow row in datagrdADDTEMP.Rows)
           {

               DataGridViewButtonCell btn = (DataGridViewButtonCell)row.Cells[3];
               btn.ReadOnly = false;
           }
     }
4

3 に答える 3

21

Enabledに表示されるボタンのプロパティを設定する際の問題について、いくつかのヘルプがありDataGridViewButtonColumnます。

DataGridViewButtonColumn無効にできるボタンを備えた独自のDataGridView列を作成する には、拡張する必要があります。MSDNのこの記事では、これを行う方法について詳しく説明しています。

この記事には多くのコードが含まれているので、よく見ることをお勧めしますが、実際に行う必要があるのは、記事にある次のクラスをコピーしてプロジェクトに貼り付けることだけです
。--
DataGridViewDisableButtonColumn --DataGridViewDisableButtonCell

これを行うとDataGridViewDisableButtonColumn、DataGridViewにsを追加できるようになります。Enabledカスタム列で公開されているパブリックプロパティを使用してEnabled、各セルのButtonコントロールのプロパティを設定します。Enabled列のすべてのボタンのプロパティを設定する必要があるため、DataGridViewのすべての行をループしてEnabledプロパティを設定するヘルパーメソッドを記述できます。

private void SetDGVButtonColumnEnable(bool enabled) {
    foreach (DataGridViewRow row in dataGridView1.Rows) {
        // Set Enabled property of the fourth column in the DGV.
        ((DataGridViewDisableButtonCell)row.Cells[3]).Enabled = enabled;
    }
    dataGridView1.Refresh();
}
于 2012-09-21T07:18:30.797 に答える
3

この MSDN 記事MSDN article:Disable button in dataGridViewを使用できます。これは、datagridview ボタンのクラスを使用します。ボタンを処理するときはいつでも、ボタンの有効化ステータスを確認する必要があることに注意してください。

于 2012-09-21T07:17:16.613 に答える