C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: Re: UserControl タブオーダーについて


(過去ログ 29 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■13685 / inTopicNo.1)  UserControl タブオーダーについて
  
□投稿者/ しほちゃん★ (4回)-(2008/02/01(Fri) 15:07:35)

分類:[.NET 全般] 

環境vb2005

いつもお世話になっています。

VB.NET2005
windowsアプリでカスタムコントロールを作成したのですが、
そのコントロールを貼り付けたフォーム内でのフォーカス移動が
思うようにいきません。
どなたかお教え願えてください。

<作成したコントロール>
TextBoxを3つ並べたものを1つのコントロールとして作成
親コントロール名:UserControl
子コントロール名:TextBox1、TextBox2、TextBox3

<実現したい動作>
あるキー(→キーなど)を押したときに次の動作を実現させる
1.カスタムコントロール内では、
  TextBox1→TextBox2→TextBox3の順にフォーカスを移動させる
2.フォーム内ではコントロールごとにフォーカスを移動させる
  Button1→UserContro1→(1の内部フォーカス移動)→UserContro2→(1の内部フォーカス移動)→の順
    (UserControl1〜UserContorol6まであります。)

UserControl内でタブオーダーを設定してもformのタブオーダーしかききません。
1で各TextBox1のLostFocus時に、
textbox2.focus()とかいたのですが、Button1→UserContro1.textbox1→UserContro2.textbox2になってしまします。
検索した結果GetNextControlでうまくいった例がありましたができませんでした(・エ・)

よろしくお願いいたします。



引用返信 編集キー/
■13694 / inTopicNo.2)  Re[1]: UserControl タブオーダーについて
□投稿者/ tama (6回)-(2008/02/01(Fri) 18:31:02)
2008/02/02(Sat) 02:33:10 編集(投稿者)

No13685 (しほちゃん★ さん) に返信
お詫び:
既に魔界の仮面弁士さんが(近いと思われる)回答をサンプルとして提示されている後なので今更ですが…。


こちらのテスト・確認の不備で的外れなことを書いてしまいました。本当に申し訳ありません。

> あるキー(→キーなど)を押したときに次の動作を実現させる
↑のことを読み飛ばしてしまっていたことと、

> UserControl内でタブオーダーを設定してもformのタブオーダーしかききません。
に気を取られてしまい、最初からUserControlにEnterイベントを設定した状態でテストしていました。

私の未熟な考え方で困惑させてしまったことを心からお詫び致します。


---------------------------------------------------------------------------------------------------

> <作成したコントロール>
> TextBoxを3つ並べたものを1つのコントロールとして作成
> 親コントロール名:UserControl
> 子コントロール名:TextBox1、TextBox2、TextBox3
>
> <実現したい動作>
> あるキー(→キーなど)を押したときに次の動作を実現させる
> 1.カスタムコントロール内では、
>   TextBox1→TextBox2→TextBox3の順にフォーカスを移動させる
> 2.フォーム内ではコントロールごとにフォーカスを移動させる
>   Button1→UserContro1→(1の内部フォーカス移動)→UserContro2→(1の内部フォーカス移動)→の順
>     (UserControl1〜UserContorol6まであります。)
>
> UserControl内でタブオーダーを設定してもformのタブオーダーしかききません。
> 1で各TextBox1のLostFocus時に、
> textbox2.focus()とかいたのですが、Button1→UserContro1.textbox1→UserContro2.textbox2になってしまします。

form側はUserControlがTextBox1〜3を持っていることを知らないので、
UserControl側で「自分自身(UserControl)がアクティブになったときどうするか」を指定しないとform側はただUserControl「だけ」にアクティブに
していきます。

具体的には、UserControlを作成する段階で、
Enterイベントを設定 → (最初にアクティブにしたい)TextBoxのSelectメソッドを書く
ことで解決できると思います。



引用返信 編集キー/
■13698 / inTopicNo.3)  Re[1]: UserControl タブオーダーについて
□投稿者/ 魔界の仮面弁士 (597回)-(2008/02/01(Fri) 19:27:20)
No13685 (しほちゃん★ さん) に返信

「↓」キーで、ユーザコントロール単位での移動、
「→」キーで、内在コントロール単位での移動にしてみましたが…意味が違うかな?
http://www.vb-user.net/junk/replySamples/2008.02.01.19.19/13685.zip
引用返信 編集キー/
■13745 / inTopicNo.4)  Re[2]: UserControl タブオーダーについて
□投稿者/ しほちゃん★ (9回)-(2008/02/04(Mon) 10:25:28)
No13698 (魔界の仮面弁士 さん) に返信
> ■No13685 (しほちゃん★ さん) に返信
>
> 「↓」キーで、ユーザコントロール単位での移動、
> 「→」キーで、内在コントロール単位での移動にしてみましたが…意味が違うかな?
> http://www.vb-user.net/junk/replySamples/2008.02.01.19.19/13685.zip

ご回答ありがとうございました。
.exeファイルを実行してみましたが「→」できませんでした。ユーザーコントロール内での移動はできません。
魔界さんの環境ではききますか?
引用返信 編集キー/
■13746 / inTopicNo.5)  Re: UserControl タブオーダーについて
□投稿者/ 魔界の仮面弁士 (601回)-(2008/02/04(Mon) 11:18:59)
2008/02/04(Mon) 11:33:24 編集(投稿者)

# 魔界さんって…。(悲)

No13745 (しほちゃん★ さん) に返信
> .exeファイルを実行してみましたが「→」できませんでした。ユーザーコントロール内での移動はできません。

フォーム上に、コントロールが

[1-1]  [3-1]  [5-1]
[1-2]  [3-2]  [5-2]
[1-3]  [3-3]  [5-3]

[2-1]  [4-1]  [6-1]
[2-2]  [4-2]  [6-2]
[2-3]  [4-3]  [6-3]

のように並んでいるかと思いますが、「→」を押すごとに、UserControl 内で
[*-1]→[*-2]→[*-3] と進み、さらに押すと、次の UserControl に進むように
したつもりですが……そういう事では無いのかな?

# 「↓」の場合は、UserControl 単位で [1-1]→[2-1]→[3-1]と進みます。


--- 以下追記 ---
No13698 のサンプルだと、UserControl の範囲が分かりにくいかも知れないので、
サンプル中の UserControl 継承クラスに対して、下記を追加しておいてください。(本題とは無関係)

Protected Overrides Sub OnEnter(ByVal e As EventArgs)
 BackColor = Color.Cyan
 MyBase.OnEnter(e)
End Sub
Protected Overrides Sub OnLeave(ByVal e As EventArgs)
 ResetBackColor()
 MyBase.OnLeave(e)
End Sub
引用返信 編集キー/
■13755 / inTopicNo.6)  Re[4]: Re: UserControl タブオーダーについて
□投稿者/ しほちゃん★ (11回)-(2008/02/04(Mon) 15:30:38)
No13746 (魔界の仮面弁士 さん) に返信
> [1-1]  [3-1]  [5-1]
> [1-2]  [3-2]  [5-2]
> [1-3]  [3-3]  [5-3]
>
> [2-1]  [4-1]  [6-1]
> [2-2]  [4-2]  [6-2]
> [2-3]  [4-3]  [6-3]
>
> のように並んでいるかと思いますが、「→」を押すごとに、UserControl 内で
> [*-1]→[*-2]→[*-3] と進み、さらに押すと、次の UserControl に進むように
> したつもりですが……そういう事では無いのかな?
>
本当に失礼いたしました。 ユーザーコントロールが
[1-1]  [1-2]  [1-3]
[2-1]  [2-2]  [2-3]
[3-1]  [3-2]  [3-3]

なので→で右にいかなかったので伝わってないのかと勘違いしてました。
ごめんなさい。
いつもとても親切にご回答いただきましてありがとうございます。
いつ魔界の王子さんみたいにスキルがつくのか不安です、><

試してみますね(^^)


引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -