- PR -

VB.NET DataGrid チェックボックスへのチェックを1クリックで行えない

1
投稿者投稿内容
domingo
会議室デビュー日: 2006/01/28
投稿数: 5
投稿日時: 2006-03-27 11:56
VB初心者です。

ある列をチェックボックス(Boolean)に設定しているのですが、
データ表示後、最初の1行目は1クリックでチェックが入るのに、
2行目以降は2回クリックしないとチェックが入りません。
これを2行目以降も1クリックでチェックが入るようにするには
どういう設定が必要なのでしょうか。

ちなみに、NULL(半透明状態)を不可化するため
(値をTrue/Falseだけにするため)

Dim csSame As New DataGridBoolColumn
csSame.MappingName = "同一"
csSame.HeaderText = "同一"
csSame.AllowNull = False
csSame.NullValue = False

という設定を施しています。

どなたかお分かりの方、ぜひとも御教授のほどよろしくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-27 12:32
引用:

domingoさんの書き込み (2006-03-27 11:56) より:

データ表示後、最初の1行目は1クリックでチェックが入るのに、
2行目以降は2回クリックしないとチェックが入りません。
これを2行目以降も1クリックでチェックが入るようにするにはどういう設定が必要なのでしょうか。


「最初の 1 行目」という説明は御幣があると思います。
「選択状態でないと受け付けてくれません」が正しいかと思います。

このままの実装では解決策がないので、根本的に実装を変更することになります。
Paint メソッドで自前で描画して、クリックも Mouse 〜 のイベントで判断することになるでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
domingo
会議室デビュー日: 2006/01/28
投稿数: 5
投稿日時: 2006-03-28 19:06
じゃんぬめっとさん、

いつもありがとうございます。

「Paint メソッドで自前で描画」というのは良く分かりませんでしたが、

Private Sub DataGrid1_MouseUp において

If DataGrid1.CurrentCell.ColumnNumber = 0 Then
If DataGrid1(DataGrid1.CurrentCell.RowNumber, 0) = True Then
DataGrid1(DataGrid1.CurrentCell.RowNumber, 0) = False
Else
DataGrid1(DataGrid1.CurrentCell.RowNumber, 0) = True
End If
End If

としました。

Paintメソッドの使い方が分からないのは心残りですが、
とりあえずヒントを得て、このような形で実装できました。

ありがとうございました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-28 19:25
引用:

domingoさんの書き込み (2006-03-28 19:06) より:

Paintメソッドの使い方が分からないのは心残りですが、
とりあえずヒントを得て、このような形で実装できました。


Paint メソッドによる実装は、自分で描画する場合の話です。
そのまま DataGridBoolColumn を利用する場合は必要ありません。(*_ _)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)