アプリ版:「スタンプのみでお礼する」機能のリリースについて

[環境]
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)…列選択とセル選択のみ可能

ということなので、私の望む、
・行選択と列選択とセル選択が可能
という制御は無理なのでしょうか。

ご存知の方いましたら、ご教示の程お願い致します。

A 回答 (1件)

泥臭いけど。



1.複数選択を可能とする

2.セル選択モードはセル選択のみ

3.列ヘッダのクリックイベントに次の処理を加える
  ・選択セルをクリア
  ・対象列の全行分のセル選択モード設定する処理

4.行ヘッダのクリックイベントに次の処理を加える
  ・選択セルをクリア
  ・対象行の全列分のセル選択モード設定する処理
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。


戴いたアドバイスを参考に以下のように作成したところ
望んだ通りの挙動になりました。


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にクリックした行の情報を突っ込むことで
なんとかそれっぽく動きました。

ありがとうございました。

お礼日時:2013/01/07 15:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています