| 修正を加えて、実装することが出来ました。ありがとうございます。 そこで、もう一つ質問なのですが、別途クリアボタンを用意して、ボタンを押すと 初期表示になるようなイベントを作りたいのですが、下記のようなコードでは、 最後にボタンを押した行がフォーカスを外さない限り黄色になったままなのと、 クリアする前に押したボタンの該当セルを押すと黄色になってしまいます。 これらを解決する手段はあるのでしょうか?
for (int i = 0; i < dataGridView1.Rows.Count; i++) { dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.White; dataGridView1.DefaultCellStyle.SelectionBackColor = Color.White; } }
■No7374 (魔界の仮面弁士 さん) に返信 > 2007/09/04(Tue) 18:15:48 編集(投稿者) > > > 分類:[.NET 全般] > 言語は制限しないということでしょうか? > No7354 が C# なので、それに合わせて回答しておきます。 > > > ■No7370 (グリッド さん) に返信 >>つまり、ボタンを押した瞬間に対象行の色を黄色に出来るようにしたいのです。 > > えぇと…。 > グリッド さんの「やりたいこと」は分かったのですが、「何に困っているのか」がわかりません。 > > > とりあえず、仕様どおりに作ってみたつもりですが、問題点はどこでしょうか。 > > private void Form1_Load(object sender, EventArgs e) > { > // 2行2列のdatagridviewで、2列目にボタンを置きます。 > dataGridView1.AllowUserToAddRows = false; > dataGridView1.Columns.Clear(); > dataGridView1.Columns.AddRange( > new DataGridViewTextBoxColumn(), > new DataGridViewButtonColumn()); > dataGridView1.RowCount = 2; > > //デフォルトの状態はbackcolorが白色になっています。 > DataGridViewCellStyle style = dataGridView1.DefaultCellStyle; > style.BackColor = style.SelectionBackColor = Color.White; > } > > private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) > { > if (e.ColumnIndex != 1) return; > > // ボタンを押すとそれぞれボタンの配置されている行のbackcolorが黄色になります。 > // 黄色になるタイミングはボタン押下時のイベントです。 > DataGridViewCellStyle style = ((DataGridView)sender).Rows[e.RowIndex].DefaultCellStyle; > style.BackColor = style.SelectionBackColor = Color.Yellow; > } |