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

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

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

Re[1]: フォーカスがテキストボックスにある時のみに


(過去ログ 25 を表示中)

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

■11486 / inTopicNo.1)  フォーカスがテキストボックスにある時のみに
  
□投稿者/ ポテト (1回)-(2007/12/15(Sat) 16:00:19)

分類:[C#] 

はじめまして。なかなかうまく出来ないので
こちらでお力をお借りしたいと思い、質問します。


テキストボックスが1〜3、ボタン1〜2がある状態で
テキストボックスにフォーカスがある時に
ボタン1をクリックするとテキストボックスの内容を表示し、
ボタンにカーソルがある時は、ボタン1をクリック、ショートカットキーでは
何も表示しないようなプログラムを作りたいのですがどうしたらいいのでしょうか?



    bool focusText; // 今のフォーカスがテキストボックスにある
bool beforeFocusText; // 前のフォーカスがテキストボックスにあった

/// <summary>
/// コントロールが入力されると発生
/// </summary>
private void Enter1(object sender, EventArgs e)
{
if (sender.GetType() == typeof(TextBox))
{
focusText = true;
}
else if (sender.GetType() == typeof(Button))
{
focusText = false;
}
}


/// <summary>
/// 入力フォーカスがコントロールを離れると発生
/// </summary>
private void Leave1(object sender, EventArgs e)
{
if (sender.GetType() == typeof(TextBox))
{
beforeFocusText = true;

}
else if (sender.GetType() == typeof(Button))
{

beforeFocusText = false;
}
}

/// <summary>
/// ボタン1クリックすると発生
/// </summary>
private void button1_Click(object sender, EventArgs e)
{
if (focusText) // フォーカスがテキストにある時
{
MessageBox.Show("ショートカット");
}
else // ボタンを押した時
{
if (beforeFocusText)
{
MessageBox.Show("ボタンクリック");
}
else
{
MessageBox.Show("無効"); // ボタンにフォーカスがある時
}
}
}

/// <summary>
/// F7を押すと発生
/// </summary>
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
      if (e.KeyCode == Keys.F7)
      {
    button1_Click(sender, e);
      }
}


これでは、テキスト3からボタン1にTab等でボタンにフォーカス移動した時に
ボタン1をクリックすると、ボタンクリックした事になってしまいます。
アドバイスお願い致します。
引用返信 編集キー/
■11493 / inTopicNo.2)  Re[1]: フォーカスがテキストボックスにある時のみに
□投稿者/ まどか (416回)-(2007/12/15(Sat) 22:37:38)
EnterとLeaveのハンドラを共通化しているようですが、TextBoxだけなのかどうかがわかりません。

まず、この手の場合、イベントがどのように遷移するかを確かめてみることです。
Enter,Leave,ClickへConsole.WriteLineを記述して出力ウィンドウで確認してみてください。
#Console.WriteLine("TextBox1.Enter")
同時にForm.ActiveControlプロパティの値(Nameとか)も出力してみるとよいでしょう。

規則性を確認できれば先が見えてくると思います。


> private void Form1_KeyDown(object sender, KeyEventArgs e)
> {
>       if (e.KeyCode == Keys.F7)
>       {
>     button1_Click(sender, e);
>       }
> }

これについては下記の私の返信投稿を読んでください。
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=21117&rev=&no=0

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -