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

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

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

Re[2]: キーボードの入力を無効化したい


(過去ログ 30 を表示中)

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

■13796 / inTopicNo.1)  キーボードの入力を無効化したい
  
□投稿者/ のぶ (12回)-(2008/02/05(Tue) 01:33:12)

分類:[C#] 

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

今私はC#2008でテキストエディタを作っています。
まず、ひとつの問題点は、等幅以外のフォントにも対応させるために1文字ずつ座標を計算してDrawしています。
その為、速度に問題があります。。。
まぁ、上記の問題は とりあえず は良いとして、一番の問題点は PageDown PageUp を連打した場合、連打をやめてからも
2,3回処理が動いてしまいます。(ピタッ!!と止まってくれない・・・)

そこで、処理を実行している間のキーボード入力を無効化したいです。
なにか方法はございますでしょうか?

ちなみに、

private void KeyDown(...)
{
Application.DoEvents();
if(KeyBoardEventCancel)return;
KeyBoardEventCancel = true;

処理

KeyBoardEventCancel = false;
}

見たいなコードを記述してもダメでした・・・orz

よろしくお願いします。

引用返信 編集キー/
■13798 / inTopicNo.2)  Re[1]: キーボードの入力を無効化したい
□投稿者/ Jitta on the way (15回)-(2008/02/05(Tue) 07:12:49)
No13796 (のぶ さん) に返信
> いつもお世話になっています。
>
> 今私はC#2008でテキストエディタを作っています。
> まず、ひとつの問題点は、等幅以外のフォントにも対応させるために1文字ずつ座標を計算してDrawしています。
> その為、速度に問題があります。。。
> まぁ、上記の問題は とりあえず は良いとして、一番の問題点は PageDown PageUp を連打した場合、連打をやめてからも
> 2,3回処理が動いてしまいます。(ピタッ!!と止まってくれない・・・)
>
> そこで、処理を実行している間のキーボード入力を無効化したいです。
> なにか方法はございますでしょうか?
>
> ちなみに、
>
> private void KeyDown(...)
> {
> Application.DoEvents();
> if(KeyBoardEventCancel)return;
> KeyBoardEventCancel = true;
>
> 処理
>
> KeyBoardEventCancel = false;
> }
>
> 見たいなコードを記述してもダメでした・・・orz
>
> よろしくお願いします。
>

バッファにたまっているからね。バッファをクリアしてやらないと。
引用返信 編集キー/
■14135 / inTopicNo.3)  Re[2]: キーボードの入力を無効化したい
□投稿者/ のぶ (13回)-(2008/02/10(Sun) 03:19:23)
No13798 (Jitta on the way さん) に返信
> ■No13796 (のぶ さん) に返信

> バッファにたまっているからね。バッファをクリアしてやらないと。

気づきました。
DoEvents を使うと、なおさらバッファに溜まるだけで(?)状況を悪化させていました・・・orz

バッファのクリアについて調べてみます。
ありがとうございました。

引用返信 編集キー/
■14136 / inTopicNo.4)  Re[2]: キーボードの入力を無効化したい
□投稿者/ のぶ (14回)-(2008/02/10(Sun) 04:19:06)
No13798 (Jitta on the way さん) に返信
> ■No13796 (のぶ さん) に返信

> バッファにたまっているからね。バッファをクリアしてやらないと。

キーバッファでいろいろと検索してみるとPeekMessage なるものを発見し、
KeyDown 処理終了後に KeyDown メッセージを削除することにより解決できました。

ありがとうございました。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -