- PR -

DataGridViewを表示したとき、指定したセルにフォーカスを移動させたい

1
投稿者投稿内容
chelsea
常連さん
会議室デビュー日: 2007/12/19
投稿数: 48
投稿日時: 2008-03-13 11:39
VB2005です。
Button1(btn1)とDataGridView1(dgv1)があり
Formを読み込んだ時にdgv1はデータを読み込み、非表示にしています。
btn1をクリックするとdgv1は表示するようにしています。

btn1をクリックしてdgv1を表示したときに、dgv1の指定したセルにフォーカスを移動させたいと考えています。
コード:
  Private Sub btn1_Click(ByVal sender As System.Object,  _
  ByVal e As System.EventArgs) Handles btn1.Click
        dgv1.Visible = True
        dgv1.CurrentCell = dgv1(0, 3)
  End Sub


上記のコードでやってみたのですが、これですとbtn1をクリックしたとき、指定したセルが選択状態にはなるのですが
フォーカスを取得するために一度dgv1のセルをクリックする必要があります。

そうではなくdgv1を表示した段階で、指定したセルにフォーカスを移動させたいのですが、どうすればよいでしょうか?
Ahf
大ベテラン
会議室デビュー日: 2006/08/16
投稿数: 172
投稿日時: 2008-03-13 15:03
「フォーカスを取得」というのがいまいちピンと来ないのですが、
dgv1.Focus()
とかでしょうか?

それとも編集状態にまでもっていきたいということでしょうか?

chelsea
常連さん
会議室デビュー日: 2007/12/19
投稿数: 48
投稿日時: 2008-03-13 15:39
Ahfさんありがとうございます。
dgv1が選択しているセルをクリックすると、セルの周りが四角に囲まれますよね?
その状態から矢印キーを押すと、セルの移動ができると思います。
それを「フォーカスを取得した状態」だと解釈しているのですが...間違いでしょうか?

ともかくセルを編集状態にしたいわけではありません。
「セルの周りが四角に囲まれて、矢印キーでセルの移動ができる状態」にしたいと考えています。
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2008-03-13 15:51
さかもとと申します。

1:Visible=True
2:dgv1にフォーカスをセット※特定セルじゃなくてまず全体にフォーカス
3: dgv1.CurrentCell = dgv1(0, 3)

ではだめですか?


_________________
------------------------------------------
拝啓、さかもとと申します♪
chelsea
常連さん
会議室デビュー日: 2007/12/19
投稿数: 48
投稿日時: 2008-03-13 16:03
引用:

さかもとさんの書き込み (2008-03-13 15:51) より:

1:Visible=True
2:dgv1にフォーカスをセット※特定セルじゃなくてまず全体にフォーカス
3: dgv1.CurrentCell = dgv1(0, 3)



ということですので
コード:
        dgv1.Visible = True
        dgv1.Focus()
        dgv1.CurrentCell = dgv1(0, 3)


あっさりできましたorz
まずdgv1にフォーカスを与える必要があったのですね...
さかもとさんありがとうございました。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-03-13 16:23
細かいのですが、Focus() より Select() のほうが適切かなと思います。

http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.focus(VS.80).aspx
引用:

Focus は、主にカスタム コントロールの作成者が使用するための下位メソッドです。
代わりに、アプリケーション プログラマは、子コントロールには Select メソッド
または ActiveControl プロパティ、フォームには Activate メソッドを使用する
必要があります。

1

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