- PR -

DataGridView.CurrentCell で移動後の入力方法について

1
投稿者投稿内容
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-03-02 09:08
WindowsXP VB2005EEでソフトを作っています。質問はDataGridViewのフォーカス
移動を"DataGridView.CurrentCell = DataGridView(1, Ro)"等で移動させ、移動先
のセルにキーボードから入力しようとしても入力できません。
一旦その入力したいセルをクリックしてから入力すると入力できますが、CurrentCell
で移動後のセルにそのまま入力できるようにするには、どうすればよいのでしょうか。

CurrentCellイベントでの移動例は次の通りです。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
Dim Ro As Integer = DataGridView1.CurrentCell.RowIndex
DataGridView1(0, Ro).Value = TextBox1.Text
DataGridView1.CurrentCell = DataGridView1(1, Ro)
End Sub
_________________
Ahf
大ベテラン
会議室デビュー日: 2006/08/16
投稿数: 172
投稿日時: 2008-03-02 19:29
EditModeの設定にもよると思いますが、

DataGridView.BeginEdit メソッド (System.Windows.Forms)

を利用してみるとどうでしょうか?
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-03-03 09:37
Ahf さん、回答ありがとうございます。昨夜からご指導いただきましたmsdnライブラリをみて
ライブラリに書かれた意味が理解できないまま、テストしていますが、いまだ編集モードを
設定できていません。ライブラリに書かれた意味を下記に追加質問いたしますのでよろしく
お願いいたします。

1.Visual Basic (宣言)とは、何処に下のコードを記載すればよいのでしょうか
Public Overridable Function BeginEdit ( selectAll As Boolean ) As Boolean

2.Visual Basic (使用法)とは、下のコードをどのイベントハンドラに記載するのでしょうか
Dim instance As DataGridView
Dim selectAll As Boolean
Dim returnValue As Boolean
returnValue = instance.BeginEdit(selectAll)

全く基本的な質問で申し訳ありませんが、よろしくお願いいたします。

ちなみに以下のコードを単純に追記し増しあら次のようなIntelliSenseが表示されます
DataGridView1.BeginEdit()
→Public Overridable Function BeginEdit(SelectAll As Boolean)As Boolean の
パラメータSelectAllに対して引数が指定されていません。

_________________
Ahf
大ベテラン
会議室デビュー日: 2006/08/16
投稿数: 172
投稿日時: 2008-03-03 11:21
BeginEditメソッドを単純に追記し、というやりかたで大丈夫だと思います。

ただ、MSDNにも書いてあるとおりBeginEditメソッドは引数をひとつ必要と
していますので。
コード:
DatGridView1.BeginEdit(True)


とでもしておくといいと思います。
引数の意味合いとしては「編集開始時にハイライト状態にするならTrue」、
と理解していただければ今のところはいいかと思います。
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-03-03 13:02
Ahfさん、ありがとうございました。
以下のように”DatGridView1.BeginEdit(True)”のコードを挿入すると見事にフォーカス
移動先のセルが編集モードになり、そのままでキーボードから文字や数字を入力できる
用になりました。大変ありがとうございました。

コード:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles Button1.Click 
     Dim Ro As Integer = DataGridView1.CurrentCell.RowIndex 
     DataGridView1(0, Ro).Value = TextBox1.Text 
     DataGridView1.CurrentCell = DataGridView1(1, Ro) 
     DatGridView1.BeginEdit(True)
End Sub


_________________
1

スキルアップ/キャリアアップ(JOB@IT)