■80303 / inTopicNo.1) |
C# チェックボックスの選択状態を判定する |
□投稿者/ ごう (6回)-(2016/07/02(Sat) 10:31:00)
|
分類:[.NET 全般]
OS:Windows7
開発環境:Visual Studio 2010 Professional
C#で、フォーム上のグリッドボックスにチェックボックスを配置し、
その選択状態を判定に使用する、ということをやっています。
フォーム上のチェックボックス判定処理が全てtrueになるということが分かりました。
当初、TrueValue、FalseValueに何も設定せず、コンボボックスのValueを"true(bool)"にしていましたが
チェックボックスの選択状態が全てtrueとなってしまいました。
以下のサイトの回答を読んで、
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1343246853
TrueValue、FalseValueに文字列を設定し、コンボボックスのValueを判定するように作りました。
判定をbool型で行うのが理想と思い、以下の通りに初期値をセットしましたが、
cbc.TrueValue = true;
cbc.FalseValue = false;
cbc.Value = true;
以下の判定処理でエラー(オブジェクト参照がオブジェクト インスタンスに設定されていません。)となります。
if ((bool)cbc.Value)
原因についてご教示頂きたいです。よろしくお願いします。
例:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
for (int i = 0; i < 10; i++)
{
dataGridView1.Columns.Add(new DataGridViewCheckBoxColumn());
dataGridView2.Columns.Add(i.ToString(), i.ToString());
dataGridView1.Columns[i].Width = 50;
dataGridView2.Columns[i].Width = 50;
}
DataGridViewCheckBoxCell cbc;
for (int i = 0; i < 5; i++)
{
cbc = (DataGridViewCheckBoxCell)dataGridView1.Rows[0].Cells[i];
cbc.TrueValue = "True";
cbc.FalseValue = "False";
cbc.Value = "True";
}
}
private void button1_Click(object sender, EventArgs e)
{
DataGridViewCheckBoxCell cbc;
for (int i = 0; i < 10; i++)
{
cbc = (DataGridViewCheckBoxCell)dataGridView1.Rows[0].Cells[i];
if ((string)cbc.Value == "True")
{
dataGridView2.Rows[0].Cells[i].Value = "○";
}
else
{
dataGridView2.Rows[0].Cells[i].Value = "";
}
}
}
}
|
|