tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル一つ前のコントロール名取得
記事No8269
投稿日: 2008/10/04(Sat) 00:06
投稿者yoi
【注意事項をよく読んでから投稿願います。読んだら投稿時この文は削除して下さい。】
 ただいま、VS2005pro、OS WindowsXP で開発中なんですが、例としてフォーム上にTextBoxを2たつ、ボタンを2つ配置しています。仮にTextBoxのひとつを"txt1"、もうひとつを"txt2"として、ボタンもbtn1,btn2とします。このときtxt1にフォーカスがあるときに、btn1をクリックすると、MsgBox1を表示します。txt2にフォーカスがあるときにbtn1をクリックすると、何も表示しない。btn2はその逆。という仕様を考えていますが、なかなかうまくいきません。
 txt1にフォーカスがあるときに、btn1をクリックするとフォーカスが移動してうまくいかず、MsgBoxが表示されません。
 どなたか良い方法がありましたら、ご教授よろしくお願いします。

[ツリー表示へ]
タイトルRe: 一つ前のコントロール名取得
記事No8270
投稿日: 2008/10/04(Sat) 07:31
投稿者花ちゃん
> 【注意事項をよく読んでから投稿願います。読んだら投稿時この文は削除して下さい。】
そもそも上記がそのまま投稿されているという事は、注意事項を無視して投稿されたと
いう事ですよね。

>仮にTextBoxのひとつを"txt1"、もうひとつを"txt2"として
質問される場合は、仮の設定での質問をしてもあまり意味がありません、本当にやり
たい事例で質問して下さい。
回答しても、大抵の場合言葉たらずでしたとか、説明が不足していましたとかが
返ってくる事が往々にしてありますので。
(TextBox が2個の場合、数多くある場合では当然やり方が違ってきます)

>という仕様を考えていますが、なかなかうまくいきません。

>  txt1にフォーカスがあるときに、btn1をクリックするとフォーカスが移動してうまくいかず、MsgBoxが表示されません。

どのようなコードを書いてどの部分がどのように思っている動作をしないのかを
説明しないとうまくいきませんでは、他人に伝わりません。

[ツリー表示へ]
タイトルRe^2: 一つ前のコントロール名取得
記事No8275
投稿日: 2008/10/05(Sun) 10:56
投稿者yoi
> > 【注意事項をよく読んでから投稿願います。読んだら投稿時この文は削除して下さい。】
> そもそも上記がそのまま投稿されているという事は、注意事項を無視して投稿されたと
> いう事ですよね。
失礼しました、注意事項は読んでいたのですが削除忘れです。申し訳ありません。

>
> >仮にTextBoxのひとつを"txt1"、もうひとつを"txt2"として
> 質問される場合は、仮の設定での質問をしてもあまり意味がありません、本当にやり
> たい事例で質問して下さい。
> 回答しても、大抵の場合言葉たらずでしたとか、説明が不足していましたとかが
> 返ってくる事が往々にしてありますので。
> (TextBox が2個の場合、数多くある場合では当然やり方が違ってきます)
失礼しました、自分なりに分かりやすくと思い記入したのですが、反対に分かりにくくなってしまったみたいですね。

>
> >という仕様を考えていますが、なかなかうまくいきません。
>
> >  txt1にフォーカスがあるときに、btn1をクリックするとフォーカスが移動してうまくいかず、MsgBoxが表示されません。
>
> どのようなコードを書いてどの部分がどのように思っている動作をしないのかを
> 説明しないとうまくいきませんでは、他人に伝わりません。
こちらも失礼しました、もう一度質問を整理して、投稿します。そのときはよろしくお願いします。
大変失礼しました。

   【全文引用を避け、必要な部分のみを引用するようにして下さい。】

[ツリー表示へ]
タイトルRe: 一つ前のコントロール名取得
記事No8271
投稿日: 2008/10/04(Sat) 11:42
投稿者ダンボ
> 一つ前のコントロール名取得

という件名では誤解を招きますね。
「直前にフォーカスを持っていたコントロールの特定」あたりが妥当ですかね。

> フォーカスが移動してうまくいかず
簡単な話で、特定したいコントロールが有限個のTextBoxならば、各々のGetForcusイベント
で自分自身をを Dim HasForcusObject As Control
にでも覚えておけばいいでしょ?
HasForcusObject = DirectCast(Sender, Control)

[ツリー表示へ]
タイトルRe^2: 一つ前のコントロール名取得
記事No8276
投稿日: 2008/10/05(Sun) 11:04
投稿者yoi
> > 一つ前のコントロール名取得
>
> という件名では誤解を招きますね。
> 「直前にフォーカスを持っていたコントロールの特定」あたりが妥当ですかね。
ありがとうございます。このような質問の書き方にしないといけないですね。
>
> > フォーカスが移動してうまくいかず
> 簡単な話で、特定したいコントロールが有限個のTextBoxならば、各々のGetForcusイベント
> で自分自身をを Dim HasForcusObject As Control
> にでも覚えておけばいいでしょ?
>  HasForcusObject = DirectCast(Sender, Control)
ありがとうございます。私の質問の書き方で、このようなアドバイスをしていただき感謝しております。
まだ、プログラミング暦も浅く、自分の伝えたいこと内容をうまく表現できなく申し訳ありません。上記の内容を試してみて、質問内容を整理し、もう一度投稿しなおします。そのときはまたご教授よろしくお願いします。

[ツリー表示へ]
タイトルRe: 一つ前のコントロール名取得
記事No8277
投稿日: 2008/10/05(Sun) 12:00
投稿者魔界の仮面弁士
>  txt1にフォーカスがあるときに、btn1をクリックするとフォーカスが移動してうまくいかず、MsgBoxが表示されません。

そういうときは、「フォーカスを持たないボタン」を作ると楽かと思いますよ。

以前、別掲示板での質問に答えたときのサンプルですが、
http://www.vb-user.net/junk/replySamples/2008.01.17.12.25/12748.zip
のように、ボタンの Selectable スタイルをオフにしておく、という物です。

これなら、Button の Click イベントでも、フォーカスは元のコントロールのままです。

 ≪btn1 の Click イベント≫
 If ActiveControl Is txt1 Then
  MsgBox("MsgBox1")
 End If

 ≪btn2 の Click イベント≫
 If ActiveControl Is txt2 Then
  MsgBox("MsgBox2")
 End If

[ツリー表示へ]
タイトルRe^2: 一つ前のコントロール名取得
記事No8281
投稿日: 2008/10/05(Sun) 21:16
投稿者yoi
魔界の仮面弁士さん、お返事ありがとうございます。

> そういうときは、「フォーカスを持たないボタン」を作ると楽かと思いますよ。
確かにほかのサイトで拝見したことがありました。そのときは違うかな?と思い試してみませんでした。もう一度確認して試してみます。

>  ≪btn1 の Click イベント≫
>  If ActiveControl Is txt1 Then
>   MsgBox("MsgBox1")
>  End If
>
>  ≪btn2 の Click イベント≫
>  If ActiveControl Is txt2 Then
>   MsgBox("MsgBox2")
>  End If

ありがとうございます。私のつたない説明でこのようなコード例まで書いていただき助かります。もう一度動作確認して報告に参ります。ありがとうございました。

[ツリー表示へ]