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

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

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

Re[3]: ボタン押下時のイベントの優先順位


(過去ログ 20 を表示中)

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

■8703 / inTopicNo.1)  ボタン押下時のイベントの優先順位
  
□投稿者/ ai (1回)-(2007/10/07(Sun) 20:12:05)

分類:[C#] 

よろしくお願いします。
visualstudio2005,c#を使っております。

ボタンとテキストボックスの両方で操作可能な電卓のアプリを作ろうとしたのですが、
数字ボタンを押した後にENTERキーを押しても、計算処理を行うENTER処理を行わず、数字ボタンの
イベントが走ってしまいます。この場合下記のENTERKEY_PRESSメソッドを呼ばすようにする
にはどうすればよいのでしょうか?また、なぜENTERKEY_PRESS処理が走らないのでしょうか?


 private void ENTERKEY_PRESS(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            //キーボードのENTERキー押下    
            if (e.KeyCode == Keys.Enter)
            {
                //ENTER処理
            }
}
 private void TextBox1_KeyPress(object sender,System.Windows.Forms.KeyPressEventArgs e)
        {
            //キーボードの数字キー押下
            if (e.KeyChar < '0' || e.KeyChar > '9')
            {
                e.Handled = true;
            }
        }
 private void btn0_Click(object sender, EventArgs e)
        {
           {
                    txtbox.Text += 0;
                
            }
        }
 public void btnEnter_Click(object sender, EventArgs e)
        {
            //ENTER処理
          
        }

引用返信 編集キー/
■8705 / inTopicNo.2)  Re[1]: ボタン押下時のイベントの優先順位
□投稿者/ mあ (94回)-(2007/10/08(Mon) 00:14:39)
No8703 (ai さん) に返信
> よろしくお願いします。
> visualstudio2005,c#を使っております。
> 
> ボタンとテキストボックスの両方で操作可能な電卓のアプリを作ろうとしたのですが、
> 数字ボタンを押した後にENTERキーを押しても、計算処理を行うENTER処理を行わず、数字ボタンの
> イベントが走ってしまいます。この場合下記のENTERKEY_PRESSメソッドを呼ばすようにする
> にはどうすればよいのでしょうか?また、なぜENTERKEY_PRESS処理が走らないのでしょうか?
> 

数字ボタンの処理が終わったら ENTER 処理用ボタンにフォーカスを移動してみたらどーですか?

private void btn0_Click(object sender, EventArgs e)
       {
          {
                   txtbox.Text += 0;
                   btnEnter.Focus(); //コレ
           }
       }

引用返信 編集キー/
■8714 / inTopicNo.3)  Re[2]: ボタン押下時のイベントの優先順位
□投稿者/ ai (2回)-(2007/10/09(Tue) 07:10:35)
上手くいきました、ありがとうございます。

図々しいかと思うのですが、後学のために、どうしてENTERのイベントハンドラが
実行されなかったのかご存じないでしょうか?

No8705 (mあ さん) に返信
> ■No8703 (ai さん) に返信
>>よろしくお願いします。
>>visualstudio2005,c#を使っております。
>>
>>ボタンとテキストボックスの両方で操作可能な電卓のアプリを作ろうとしたのですが、
>>数字ボタンを押した後にENTERキーを押しても、計算処理を行うENTER処理を行わず、数字ボタンの
>>イベントが走ってしまいます。この場合下記のENTERKEY_PRESSメソッドを呼ばすようにする
>>にはどうすればよいのでしょうか?また、なぜENTERKEY_PRESS処理が走らないのでしょうか?
>>
>
> 数字ボタンの処理が終わったら ENTER 処理用ボタンにフォーカスを移動してみたらどーですか?
>
> private void btn0_Click(object sender, EventArgs e)
> {
> {
> txtbox.Text += 0;
> btnEnter.Focus(); //コレ
> }
> }
>
解決済み
引用返信 編集キー/
■8723 / inTopicNo.4)  Re[3]: ボタン押下時のイベントの優先順位
□投稿者/ 囚人 (194回)-(2007/10/09(Tue) 10:08:54)
ENTERKEY_PRESS がどのコントロールのイベントをリッスンしているのか分からないので、TextBox.KeyPress だとします。

TextBox と無関係の場所でキー操作が行われても、TextBox はイベントを発生できないからですね。

Windows の電卓のような操作を目指しているなら、Form.KeyPreview を True にして、Form.KeyPress イベントを処理すれば、どこにフォーカスがあっても処理できますよ。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -