- 題名: DataGridの行選択について
- 日時: 2004/07/20 13:52:04
- ID: 4940
- この記事の返信元:
- (なし)
- この記事への返信:
- [4941] Re[1]: DataGridの行選択について2004/07/20 14:37:12
- ツリーを表示
passeさん、SHさん、こんにちは。深山と申します。 ■No4940に返信(passeさんの記事) > DataGrid(Windows.Forms)の行ヘッダで行を選択するときに、 > 1行しか選択できないようにしたのですが、やり方がわかりません。 > WEBでも調べたのですが、見つけきれませんでした・・・ 割とよく見かける内容だと思うのですけど‥‥例えばこちらの掲示板でも過去同様の話題が ありました。 http://dobon.net/vb/bbs/log3-2/618.html http://dobon.net/vb/bbs/log3-4/1885.html で、管理人さまがメルマガの方に纏めてらっしゃいますので、そちらを参考にされたらいかがでしょう? http://backno.mag2.com/reader/BackBody?id=200406010600000000104516000 ■No4941に返信(SHさんの記事) > Private Sub DataGrid1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles DataGrid1.Paint > DataGrid1.Select(DataGrid1.CurrentRowIndex) > End Sub えっと‥‥これだと選択行が増えていってしまいません?(^_^;) # 未検証です。勘違いでしたらごめんなさいm(__)m
■No4955に返信(SHさんの記事)
>>以下のように記述したのですが、行ヘッダで複数行選択出来てしまいました。
>> -----------------------------------------------------------------------
>> Private Sub DataGrid_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles dgdDb.Paint
>> '行選択を解除する
>> DataGrid.UnSelect(DataGrid.CurrentRowIndex)
>> '行選択にする
>> DataGrid.Select(DataGrid.CurrentRowIndex)
>> End Sub
>> -----------------------------------------------------------------------
> 上記のやり方だと、CurrentRowIndexは同じ値なので、
> 今選択した行を解除→選択したことになっちゃいますよね^^;
SHさんが仰ってるように、現在行の選択を解除→選択という動作になってしまいますね(^_^;)
> 行は、Paintの前に選択されていた行を取得しなきゃいけないので、
> 何かしらの変数に保持しておくか、もしくは一回全行解除しないとダメです。
その昔、『何かしらの変数に保持』の方法でコーディングしたことがありました。
余り役には立たないかも知れませんけど、参考までにコードを記載致します。
# C# のものを手打ちで VB 化したので、このままではコンパイルを通らないかも‥‥
Private lastRow As Integer = -1
Private Sub DataGrid1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles DataGrid1.Paint
If (DataGrid1.VisibleRowCount > 0) Then
Dim currentRow As Integer = DataGrid1.CurrentCell.RowNumber
If ((currentRow <> lastRow) AndAlso _
((lastRow >= 0) AndAlso (lastRow < DataGrid1.BindingContext(DataGrid1.DataSource, DataGrid1.DataMember).Count))) Then
DataGrid1.UnSelect(lastRow)
End If
DataGrid1.Select(currentRow)
lastRow = currentRow
End If
End Sub
# ‥‥とカキコしてから気付く。昔の自分は検証してたらしい(汗)< UnSelect しなきゃいけない
分類:[.NET]
始めましてVB.NET を勉強中のpasseと申します。
初歩的な質問かもしれませんが、早速質問をさせて頂きます。
DataGrid(Windows.Forms)の行ヘッダで行を選択するときに、
1行しか選択できないようにしたのですが、やり方がわかりません。
WEBでも調べたのですが、見つけきれませんでした・・・
どうかご伝授のほどよろしくお願い致します。