DOBON.NETプログラミング掲示板過去ログ
フォーカス移動時のビープ音
題名: フォーカス移動時のビープ音
著者: KORO
日時: 2005/09/16 21:02:36
ID: 12851
この記事の返信元:
(なし)
この記事への返信:
[12853]
Re[1]: フォーカス移動時のビープ音
ant
2005/09/16 22:03:06
ツリーを表示
環境/言語:[Windows2000・XP C#]
分類:[.NET]
お世話になります。
VS2003 C#にてWindowsアプリケーションを作成しております。
フォーム上にテキストボックスを2つ(AとB)設け、テキストAに
フォーカスがある時、KeyDownイベントでEnterキーが押下された
場合はテキストBにフォーカスを移す処理を作成したのですが
フォーカス遷移の際にビープ音がなってしまうようです。。
if( e.KeyCode == Keys.Enter )
{
this.FindForm().SelectNextControl(textBox1,true,true,true,false);
}
又は
if( e.KeyCode == Keys.Enter )
{
SendKeys.SendWait("+{Alt}+{TAB}");
}
どちらの場合でも同じ結果になります。
次TabIndexのコントロールにフォーカスを移す場合はビープ音が
鳴ってしまうものなのでしょうか?
宜しくお願いします
題名: Re[1]: フォーカス移動時のビープ音
著者: ant
URL:
http://ant0x.udap.jp/
日時: 2005/09/16 22:03:06
ID: 12853
この記事の返信元:
[12851]
フォーカス移動時のビープ音
KORO
2005/09/16 21:02:36
この記事への返信:
[12856]
Re[2]: フォーカス移動時のビープ音
じゃんぬねっと
2005/09/16 22:27:45
ツリーを表示
こんにちは。antです。
> フォーカス遷移の際にビープ音がなってしまうようです。。
そのビープ音は一行入力のテキストボックスでEnterキー
を押した際に鳴るものです。従って、ビープ音を鳴らすことなく
フォーカスを遷移させるためには、テキストボックでEnterキー
が処理される以前つまり、プリプロセスの段階で遷移させなければ
ならないということです。
通常はProcessCmdKeyなどをオーバーライドすればいいと思います。
題名: Re[2]: フォーカス移動時のビープ音
著者: じゃんぬねっと
URL:
http://jeanne.wankuma.com/
日時: 2005/09/16 22:27:45
ID: 12856
この記事の返信元:
[12853]
Re[1]: フォーカス移動時のビープ音
ant
2005/09/16 22:03:06
この記事への返信:
[12859]
Re[3]: フォーカス移動時のビープ音
ant
2005/09/16 23:08:47
ツリーを表示
こんにちは、じゃんぬ です。
ant さん、お世話になっております。
■No12853に返信(antさんの記事)
> フォーカスを遷移させるためには、テキストボックでEnterキー
> が処理される以前つまり、プリプロセスの段階で遷移させなければ
> ならないということです。
> 通常はProcessCmdKeyなどをオーバーライドすればいいと思います。
なるべくオーバーライドは使用しないに限りますよね。
Beep 音が鳴るのは、
ProcessCmdKey -> ... -> ProcessDialogKey -> ... -> KeyDown -> KeyPress
この後です。
つまりは、KeyPress イベントでキー処理を終了したことにすれば良いのです。
Enter によるフォーカス遷移はこちらを参照してください。
フォームで [Enter] キーが押された時にフォーカスを遷移させる
http://jeanne.wankuma.com/tips/form/27-cobolerform.html
# こういうフォーカス遷移は Windows の標準から外れるのでお勧めしません。
題名: Re[3]: フォーカス移動時のビープ音
著者: ant
URL:
http://ant0x.udap.jp/
日時: 2005/09/16 23:08:47
ID: 12859
この記事の返信元:
[12856]
Re[2]: フォーカス移動時のビープ音
じゃんぬねっと
2005/09/16 22:27:45
この記事への返信:
[12865]
Re[4]: フォーカス移動時のビープ音
じゃんぬねっと
2005/09/17 12:07:35
ツリーを表示
これは、じゃんぬねっとさんご指摘有難うございます。
> なるべくオーバーライドは使用しないに限りますよね。
> ProcessCmdKey -> ... -> ProcessDialogKey -> ... -> KeyDown -> KeyPress
> この後です。
> つまりは、KeyPress イベントでキー処理を終了したことにすれば良いのです。
確かにそうなんですが、何か妙なところで遠回りしている
気がするので、ProcessCmdKeyを…と書いた次第です。(^^;
> # こういうフォーカス遷移は Windows の標準から外れるのでお勧めしません。
まったくもって、その通りです。
題名: Re[4]: フォーカス移動時のビープ音
著者: じゃんぬねっと
URL:
http://jeanne.wankuma.com/
日時: 2005/09/17 12:07:35
ID: 12865
この記事の返信元:
[12859]
Re[3]: フォーカス移動時のビープ音
ant
2005/09/16 23:08:47
この記事への返信:
[12873]
Re[5]: フォーカス移動時のビープ音
ant
2005/09/18 11:38:33
ツリーを表示
こんにちは、じゃんぬ です。
■No12859に返信(antさんの記事)
> 確かにそうなんですが、何か妙なところで遠回りしている
> 気がするので、ProcessCmdKeyを…と書いた次第です。(^^;
気持ちはわかります、ムダを失くすことは有用なことです。
今回、返す値によって以後のキー関係のイベントは発生すらしないことが問題かと思います。
別の場所でキーを取得していたら、影響範囲ってどうなると思います?
(あんまりないとは思いますが...)
イベント レベルでない部分でインターセプトしてしまうと、
通常の動作との差異 (つまり、キーイベントすら発生しない) により、
混乱を招く、なんていうことはグループ開発ではザラにあります。
VB7, C#1.0 以降が NotOverridable がデフォルトである理由を考えてみませんか?
Java は Overridable がデフォルトでした。
ほとんどのメソッドに final をつけなければならなかったわけです。
どうでしょう? 色んな考え方はできますが...
題名: Re[5]: フォーカス移動時のビープ音
著者: ant
URL:
http://ant0x.udap.jp/
日時: 2005/09/18 11:38:33
ID: 12873
この記事の返信元:
[12865]
Re[4]: フォーカス移動時のビープ音
じゃんぬねっと
2005/09/17 12:07:35
この記事への返信:
(なし)
ツリーを表示
こんにちは。
> 今回、返す値によって以後のキー関係のイベントは発生すらしないことが問題か
・・・・・
> どうでしょう? 色んな考え方はできますが...
確かに、一般的にはその通りだと思います。
大変勉強になりました。有難うございました。
これからもご指導よろしくお願いします。<(_ _)>
また、質問者の方を置いて話を進めてしまって、
申し訳ありませんでした。<(_ _)>
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
お世話になります。
VS2003 C#にてWindowsアプリケーションを作成しております。
フォーム上にテキストボックスを2つ(AとB)設け、テキストAに
フォーカスがある時、KeyDownイベントでEnterキーが押下された
場合はテキストBにフォーカスを移す処理を作成したのですが
フォーカス遷移の際にビープ音がなってしまうようです。。
if( e.KeyCode == Keys.Enter )
{
this.FindForm().SelectNextControl(textBox1,true,true,true,false);
}
又は
if( e.KeyCode == Keys.Enter )
{
SendKeys.SendWait("+{Alt}+{TAB}");
}
どちらの場合でも同じ結果になります。
次TabIndexのコントロールにフォーカスを移す場合はビープ音が
鳴ってしまうものなのでしょうか?
宜しくお願いします