- PR -

TreeViewからのFocus移動について

投稿者投稿内容
1co
常連さん
会議室デビュー日: 2005/08/10
投稿数: 39
投稿日時: 2005-08-10 14:49
引用:

なおこ(・∀・)さんの書き込み (2005-08-10 13:32) より:
引用:

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}")

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



なおこさん、

とんでもないです。
いろいろとアドバイスありがとうございました。
なおこさん、じゃんぬさんのアドバイスを参考に
いろいろコードを変更してみます。

お忙しいところありがとうございました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-08-10 14:49
引用:

■マウスクリック時
 フォーカスがRootNodeに移動
■キー操作時
 フォーカスがcontrol.focus()のControlに移動
という結果になってしまいました。
恐れ入りますが、別の回避策をご存知でしたら教えてください。


どうも、Node を持っているとダメのようですね。
SelectedNode が変わる時点でフォーカスもムリに奪うみたいですし... orz

コード:
    Select Case e.Action
        Case TreeViewAction.ByMouse
            SendKeys.Send("{Tab}")
            Me.Button1.Focus()
        Case TreeViewAction.ByKeyboard
            Me.Button1.Focus()
    End Select





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

どうも、Node を持っているとダメのようですね。
SelectedNode が変わる時点でフォーカスもムリに奪うみたいですし... orz



TreeViewを使う限り、しかたのかいことなのでしょうか。。

いろいろとアドバイスありがとうございました。
ほかのコントロールへの置き換えも含め、
いろいろ検討してみます。
trapemiya
大ベテラン
会議室デビュー日: 2005/07/30
投稿数: 102
投稿日時: 2005-08-10 18:06
思いつきで全く試していませんが、フォームのActiveControlプロパティにボタンをセットしてみたらいかがでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-08-10 18:42
こんにちは、じゃんぬ です。

引用:

trapemiyaさんの書き込み (2005-08-10 18:06) より:
思いつきで全く試していませんが、フォームのActiveControlプロパティにボタンをセットしてみたらいかがでしょうか?


Me.ActiveControl = Nothing で逃がしたところで、
Node を掴んでると無視されます。
それどころか、Me.Button1.Focus() の戻り値が True なのが憎いでしw



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

trapemiyaさんの書き込み (2005-08-10 18:06) より:
思いつきで全く試していませんが、フォームのActiveControlプロパティにボタンをセットしてみたらいかがでしょうか?



アドバイスありがとうございます。
試してみましたが、うまくいきませんでした。。
タイミングの問題かもしれませんので、もう少し調べて見ます。
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2005-08-11 01:23
南部です。

もどかしさ爆発ですね。
強引ですが、なんとなく動いているっぽいです。
検証はしてませんのであしからず。

コード:
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
  if(e.Action == TreeViewAction.ByMouse)
  {
    Application.Idle += new EventHandler(Application_Idle);
  }
}

private void Application_Idle(object sender, EventArgs e)
{
  Application.Idle -= new EventHandler(Application_Idle);
  button1.Focus();
}



1co
常連さん
会議室デビュー日: 2005/08/10
投稿数: 39
投稿日時: 2005-08-11 10:34
引用:

nanbuさんの書き込み (2005-08-11 01:23) より:
南部です。

もどかしさ爆発ですね。
強引ですが、なんとなく動いているっぽいです。
検証はしてませんのであしからず。

コード:
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
  if(e.Action == TreeViewAction.ByMouse)
  {
    Application.Idle += new EventHandler(Application_Idle);
  }
}

private void Application_Idle(object sender, EventArgs e)
{
  Application.Idle -= new EventHandler(Application_Idle);
  button1.Focus();
}







南部さん、ありがとうございます。

VB.netコードに変換して実行したところ、
Nodeのマウスクリック・キー操作とも
Focusを遷移させることができました!

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

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