質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

2768閲覧

DataGridViewCheckBoxColumnからのセル移動について

Martinez4_46

総合スコア16

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2018/03/22 08:24

編集2018/04/03 07:57

VB.netのDataGridViewについての質問です。

DataGridViewCheckBoxColumnにフォーカスが当たっているとき、
TabキーとEnterキーで横のセルに移動したいと考えています。
実現する方法を教えていただきたいです。

ProcessDialogKeyとProcessDataGridViewKeyをオーバーライドする方法で、
DataGridViewTextBoxColumnからのセル移動は実現できたのですが、
DataGridViewCheckBoxColumnにフォーカスが当たっているときは、
TabキーとEnterキーを押下してもフォーカスが移動しませんでした。

使用ツール:Microsoft Visual Studio 2008

以上、よろしくお願いいたします。

2018/04/03 追記
上記方法の他に、DataGridViewCheckBoxColumnにはフォーカスを当てず、
スキップするという方法も考えています。
ご存知の方がおられましたら、教えていただけませんでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2018/04/03 08:44

現象を再現できるコードがあれば、回答が得られやすいかと思います。
guest

回答2

0

下記コードで確認しましたが、Enterキーで全てのセルで移動しました。
現象が発生するミニマムコードを公開することは出来ませんでしょうか?

VB.NET

1Public Class Form1 2 3 Public Sub New() 4 5 ' この呼び出しは、Windows フォーム デザイナで必要です。 6 InitializeComponent() 7 8 ' InitializeComponent() 呼び出しの後で初期化を追加します。 9 Dim DataGridView1 As DataGridView2 10 Dim Column1 As System.Windows.Forms.DataGridViewTextBoxColumn 11 Dim Column2 As System.Windows.Forms.DataGridViewButtonColumn 12 Dim Column3 As System.Windows.Forms.DataGridViewCheckBoxColumn 13 Dim Column4 As System.Windows.Forms.DataGridViewComboBoxColumn 14 Dim Column5 As System.Windows.Forms.DataGridViewTextBoxColumn 15 16 DataGridView1 = New DataGridView2 17 DataGridView1.Dock = System.Windows.Forms.DockStyle.Fill 18 DataGridView1.Name = "DataGridView1" 19 20 Column1 = New System.Windows.Forms.DataGridViewTextBoxColumn 21 Column1.HeaderText = "Column1" 22 Column1.Name = "Column1" 23 DataGridView1.Columns.Add(Column1) 24 25 Column2 = New System.Windows.Forms.DataGridViewButtonColumn 26 Column2.HeaderText = "Column2" 27 Column2.Name = "Column2" 28 DataGridView1.Columns.Add(Column2) 29 30 Column3 = New System.Windows.Forms.DataGridViewCheckBoxColumn 31 Column3.HeaderText = "Column3" 32 Column3.Name = "Column3" 33 DataGridView1.Columns.Add(Column3) 34 35 Column4 = New System.Windows.Forms.DataGridViewComboBoxColumn 36 Column4.HeaderText = "Column4" 37 Column4.Name = "Column4" 38 DataGridView1.Columns.Add(Column4) 39 40 Column5 = New System.Windows.Forms.DataGridViewTextBoxColumn 41 Column5.HeaderText = "Column5" 42 Column5.Name = "Column5" 43 DataGridView1.Columns.Add(Column5) 44 45 Me.Controls.Add(DataGridView1) 46 47 DataGridView1.RowCount = 10 48 49 End Sub 50 51End Class 52 53Public Class DataGridView2 54 Inherits DataGridView 55 56 Protected Overrides Function ProcessDialogKey(ByVal keyData As Keys) As Boolean 57 'Enterキーが押された時は、Tabキーが押されたようにする 58 If (keyData And Keys.KeyCode) = Keys.Enter Then 59 Return Me.ProcessTabKey(keyData) 60 End If 61 Return MyBase.ProcessDialogKey(keyData) 62 End Function 63 64 Protected Overrides Function ProcessDataGridViewKey(ByVal e As KeyEventArgs) As Boolean 65 'Enterキーが押された時は、Tabキーが押されたようにする 66 If e.KeyCode = Keys.Enter Then 67 Return Me.ProcessTabKey(e.KeyCode) 68 End If 69 70 Return MyBase.ProcessDataGridViewKey(e) 71 End Function 72End Class

投稿2018/04/05 02:28

YAmaGNZ

総合スコア10222

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

2018/04/03 追記の方法の場合なら
DataGridView1_SelectionChangedかなんかで現在selectされているセルを取得して(ここで取得される値はエンターキーが押される前の値なので)
その次のセルが(この次のセルっていうのがエンターキーが押された後)DataGridViewCheckBoxColumnなら
DataGridView1(x,x).Selected = True
とか
DataGridView1.CurrentCell = DataGridView1(0, 0)
でselectされているセルをDataGridViewCheckBoxColumnの次のセルに移動するとか?

(DataGridViewのMultiSelectプロパティはfalseでね)

投稿2018/04/05 01:56

syameimaru

総合スコア181

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Martinez4_46

2018/04/05 01:59

ご回答ありがとうございます。 早速試してみたいと思います。
syameimaru

2018/04/05 02:05

自分で作っておいてなんですが、あくまで応急処置(動いたように見せかけるだけ)という感じなので あしからず...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問