- PR -

TreeViewからのFocus移動について

投稿者投稿内容
1co
常連さん
会議室デビュー日: 2005/08/10
投稿数: 39
投稿日時: 2005-08-10 11:20
はじめまして。

現在VB.netでWinアプリを作成しています。

左側にTreeView、右側にPanelを配置し、
TreeViewで選択されたNodeにより
右側のPanelの内容を設定するというものです。

TreeViewでNodeを選択し、Panelにコントロールを追加したあと、
Panel上のコントロールにフォーカスを移動したいのですが、
control.focus()

control.selectnextcontrol()
等を行っても移動できません。

どなたか原因のわかる方がいらっしゃいましたら教えてください。
よろしくお願いいたします。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-08-10 11:29
こんにちは、じゃんぬ です。

引用:

control.focus()


それでいけるはずです。
そのコントロールのインスタンス.Focus() でいけました。
VB2005 ではないですよね? (^-^;)

引用:

control.selectnextcontrol()


これは、次のコントロールにフォーカスを移すもので、求めているものと違いますよね。



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2005-08-10 11:41
引用:

じゃんぬねっとさんの書き込み (2005-08-10 11:29) より:
control.focus()
それでいけるはずです。
そのコントロールのインスタンス.Focus() でいけました。



わたしも実験してみたんですが,
キーだとうまくいくけど,マウスでクリックした時,
フォーカスが移ってくれないです。

以下,実験コード
●フォームロードのコード
Dim rootnode As TreeNode = New TreeNode("root")
rootnode.Nodes.Add("aaa")
rootnode.Nodes.Add("bbb")

Me.TreeView1.Nodes.Add(rootnode)
●TreeView.AfterSelectのコード
Me.Panel1.Controls.Clear()
Dim t As TextBox = New TextBox
t.Text = e.Node.Text
Me.Panel1.Controls.Add(t)
t.Focus()
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-08-10 11:59
引用:

わたしも実験してみたんですが,
キーだとうまくいくけど,マウスでクリックした時,
フォーカスが移ってくれないです。


こんな感じで...

Me.TreeView1.SelectedNode = Nothing
Me.Button1.Focus()

[ シグネチャを削除 ]

[ メッセージ編集済み 編集者: じゃんぬねっと 編集日時 2006-10-12 11:42 ]
1co
常連さん
会議室デビュー日: 2005/08/10
投稿数: 39
投稿日時: 2005-08-10 12:04
じゃんぬねっとさん、なおこ(・∀・)さん、ご返信ありがとうございます。

VB2005ではないです。
なおこさんのおっしゃるとおり、control.focus()で
キーだと思うように動作しますが、
NodeをClickした場合はうまくいきませんね。

Click時も同様に動作させたいのですが。。。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-08-10 12:15
引用:

Click時も同様に動作させたいのですが。。。


修正した投稿を読まれてないかもしれないので、再度投稿。

 Me.TreeView1.SelectedNode = Nothing
 Me.Button1.Focus()

こんな感じでどうですか?



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1co
常連さん
会議室デビュー日: 2005/08/10
投稿数: 39
投稿日時: 2005-08-10 12:15
じゃんぬねっとさん、

Me.TreeView1.SelectedNode = Nothing
を入れてみましたが、

■マウスクリック時
 フォーカスがRootNodeに移動
■キー操作時
 フォーカスがcontrol.focus()のControlに移動

という結果になってしまいました。
恐れ入りますが、別の回避策をご存知でしたら教えてください。
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2005-08-10 13:32
引用:

じゃんぬねっとさんの書き込み (2005-08-10 11:59) より:
こんな感じで...
Me.TreeView1.SelectedNode = Nothing
Me.Button1.Focus()


やってみたですが,
1coさんと同じ結果になりました...

引用:

control.selectnextcontrol()


上記のような動きよいのであれば
#じゃんぬさんがそれは違いますよねって,確認していらっしゃいますが(汗
PanelにAddした最初のコントロールにフォーカスをセットする事は
できました。かなり無理やりっぽいですがw

●TreeView.AfterSelectのコード
Me.Panel1.Controls.Clear()
Dim t As TextBox = New TextBox

t.Text = e.Node.Text
Me.Panel1.Controls.Add(t)
SendKeys.Send("{Tab}")

お役に立てなくてすみません…

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