teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

C#の検証コードを追記

2017/11/16 02:23

投稿

ShikaTech
ShikaTech

スコア468

answer CHANGED
@@ -1,2 +1,49 @@
1
1
  `DataGridView1.Rows(e.RowIndex).Cells.Item("SEL").Value= "False"`
2
- では?
2
+ では?
3
+
4
+ 追記
5
+ --
6
+ ものすごい雑な検証コードですが、これでチェックボックスは外れました。
7
+ ```C#
8
+ private void Form1_Load(object sender, EventArgs e)
9
+ {
10
+ var gv = new DataGridView()
11
+ {
12
+ Dock = DockStyle.Fill,
13
+ AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
14
+ Parent = this
15
+ };
16
+
17
+ var cbx = new DataGridViewCheckBoxColumn()
18
+ {
19
+ TrueValue = "True",
20
+ FalseValue = "False"
21
+ };
22
+ var tbx = new DataGridViewTextBoxColumn();
23
+ gv.Columns.AddRange(cbx, tbx);
24
+ gv.Columns[0].HeaderText = "チェックボックス";
25
+ gv.Columns[1].HeaderText = "テキスト";
26
+
27
+ gv.CellValueChanged += GvOnCellValueChanged;
28
+
29
+ this.Controls.Add(gv);
30
+ this.Controls.Add(new Label() { Name = "Message" });
31
+ }
32
+
33
+ private void GvOnCellValueChanged(object sender, DataGridViewCellEventArgs e)
34
+ {
35
+ var gv = (DataGridView)sender;
36
+ if (gv.Rows[e.RowIndex].Cells[0].Value == null)
37
+ return;
38
+ var chkValue = gv.Rows[e.RowIndex].Cells[0].Value.ToString();
39
+ if (chkValue == "True")
40
+ {
41
+ var tbxValue = gv.Rows[e.RowIndex].Cells[1].Value;
42
+ if (tbxValue != null && !string.IsNullOrWhiteSpace(tbxValue.ToString()) && int.Parse(tbxValue.ToString()) <= 10)
43
+ {
44
+ this.Controls.Find("Message", true)[0].Text = "数量が10以下です。";
45
+ gv.Rows[e.RowIndex].Cells[0].Value = "False";
46
+ }
47
+ }
48
+ }
49
+ ```