[環境]
Windows7 Professional
Visual Studio 2010 Professional
お世話になります。
上記環境下にて、DataGridViewを用いたプログラムを
作っております。
そこで、タイトルの件なのですが
DataGridViewの一番左(行ヘッダー)をクリックすると行選択、
一番上(列ヘッダー)をクリックすると列選択、
セルをクリックするとセル選択できるようにしたいと思っています。
しかし、DataGridViewのセル選択はSelectionModeという
プロパティで制御しているようでして、以下の5種類の選択方法しかないようです。
(1) CellSelect
1 つ以上の個別のセルを選択できます。
(2) FullRowSelect
行のヘッダーまたは行内のセルをクリックすることによって行全体が選択されます。
(3) FullColumnSelect
列のヘッダーまたは列内のセルをクリックすることによって列全体が選択されます。
(4) RowHeaderSelect
行のヘッダー セルをクリックすることによって行が選択されます。個別のセルは、そのセルをクリックすることによって選択できます。
(5) ColumnHeaderSelect
列のヘッダー セルをクリックすることによって列が選択されます。個別のセルは、そのセルをクリックすることによって選択できます。
要するに、
(1)…セル選択のみ可能
(2)…行選択のみ可能(セルクリック時は行選択扱い)
(3)…列選択のみ可能(セルクリック時は列選択扱い)
(4)…行選択とセル選択のみ可能
(5)…列選択とセル選択のみ可能
ということなので、私の望む、
・行選択と列選択とセル選択が可能
という制御は無理なのでしょうか。
ご存知の方いましたら、ご教示の程お願い致します。
No.1ベストアンサー
- 回答日時:
泥臭いけど。
1.複数選択を可能とする
2.セル選択モードはセル選択のみ
3.列ヘッダのクリックイベントに次の処理を加える
・選択セルをクリア
・対象列の全行分のセル選択モード設定する処理
4.行ヘッダのクリックイベントに次の処理を加える
・選択セルをクリア
・対象行の全列分のセル選択モード設定する処理
早速のご回答ありがとうございます。
戴いたアドバイスを参考に以下のように作成したところ
望んだ通りの挙動になりました。
Private Sub dgvMain_ColumnHeaderMouseClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgvMain.ColumnHeaderMouseClick
Dim i As Integer = 0
dgvMain.ClearSelection()
For i = 0 To dt.Rows.Count - 1
dgvMain.Item(e.ColumnIndex, i).Selected = True
Next
End Sub
Private Sub dgvMain_RowHeaderMouseClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgvMain.RowHeaderMouseClick
Dim i As Integer = 0
dgvMain.ClearSelection()
For i = 0 To dt.Columns.Count - 1
dgvMain.Item(i, e.RowIndex).Selected = True
Next
dgvMain.Rows(e.RowIndex).Selected = True
End Sub
行ヘッダーの三角が移動しなかったので、
CurrentCellにクリックした行の情報を突っ込むことで
なんとかそれっぽく動きました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ちょっと先の未来クイズ第2問
9月9日(月)に発表される「第3回子どもマネー川柳」に入賞する川柳を考えてこちらに投稿してください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
データグリッドビューの一番最初の行に列を追加したい
Visual Basic(VBA)
-
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
-
4
VB2005 DataGridView上でクリックを無効にする方法はありますか?
Visual Basic(VBA)
-
5
DataGridViewで指定したセルの値を取得
Visual Basic(VBA)
-
6
C# DataGridView のヘッダーセル中央揃え
C言語・C++・C#
-
7
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
8
vb2008にてDefaultCellStyleが反映されない
Visual Basic(VBA)
-
9
グリッドビューでのチェックボックス押下時イベント
Visual Basic(VBA)
-
10
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
11
DataGridViewの各セル幅を自由に決め、その幅で固定したい
Visual Basic(VBA)
-
12
DataGridViewにてセル以外をクリックしたか判別
Visual Basic(VBA)
-
13
VB.NET DataGridView 縦スクロールバーを常に表示
Visual Basic(VBA)
-
14
【C#】DataGridViewの最大列数について
システム
-
15
C# DataTableに最後に追加した行をDataGridView上で選択状態にする方法は?
C言語・C++・C#
-
16
C# DataGridViewで複数選択したセルに同じ値を一括で入力するには
C言語・C++・C#
-
17
【VB】タブ切り替え時のイベント
Visual Basic(VBA)
-
18
GridViewでハイライトを使用しない方法
Visual Basic(VBA)
-
19
GridViewにバインドせずにデータを表示する方法
Microsoft ASP
-
20
.net 複数の主キーを設定する方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
Excelのプルダウンで2列分の情...
-
i=cells(Rows.Count, 1)とi=cel...
-
指定した条件で行セルを非表示...
-
Excelで指定した日付から過去の...
-
Application.Matchで特定行の検索
-
EXCELで変数をペーストしたい
-
特定の文字を条件に行挿入とそ...
-
ExcelのVBAで数字と文字列をマ...
-
Excel VBA マクロ ある列の最終...
-
連続する複数のセル値がすべて0...
-
【EXCEL VBA】Range("A:A").Fi...
-
【Excel VBA】指定行以降をクリ...
-
EXCELのVBA-フィルタ抽出後の...
-
VBA初心者です。結合セルを保持...
-
エクセルVBAで結合セルの真ん中...
-
Excelのハイパーリンクにマクロ...
-
特定行の色を変えたい(FlexGrid)
-
ExcelのVBA・チェックボックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
i=cells(Rows.Count, 1)とi=cel...
-
ExcelVBAを使って、値...
-
【Excel VBA】指定行以降をクリ...
-
特定のセルが空白だったら、そ...
-
EXCELで変数をペーストしたい
-
Excelで指定した日付から過去の...
-
VBAの間違い教えて下さい
-
【Excel】指定したセルの名前で...
-
Excelのプルダウンで2列分の情...
-
エクセルVBAでコピーして順...
-
Excel vbaで特定の文字以外が入...
-
Excel VBA、 別ブックの最終行...
-
【VBA】指定したセルと同じ値で...
-
特定の文字を条件に行挿入とそ...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
VBA初心者です。次のVBAコード...
-
指定した条件で行セルを非表示...
-
VBAでセルをクリックする回...
-
DataGridViewの各セル幅を自由...
おすすめ情報