- 題名: 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でも調べたのですが、見つけきれませんでした・・・
どうかご伝授のほどよろしくお願い致します。