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

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

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

キーボードでENTERを押したときイベント制御について

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

■85974 / inTopicNo.1)  キーボードでENTERを押したときイベント制御について
  
□投稿者/ Haru (1回)-(2017/12/06(Wed) 18:41:20)

分類:[C#] 

現在C#.NETでWindowsアプリを開発しているのですが、ある画面で、
テキストボックスにテキストをタイプしたあと、ENTERキーを押すと処理が実行されて、
データが更新される仕組みがあります。

しかし、プログラム上ENTERが押されたときにトリガが入っているので、
英数字の時はよいのですが、日本語をタイプしているときは、タイプ途中で、
変換して、決定キーを押した段階でENTERが押されたとプログラムが判断して、
タイプ途中なのに処理が実行されてしまいます。

プログラマは外国人のため課題や対処方法がわからないみたいなんですが、
テキストボックスのイベントコントロールで適切に処理する方法があるのかななんて思っています。

開発ツールはVisual Sutudioです。

どうか、有識者の方ソリューションをご教示いただけないでしょうか、、。


引用返信 編集キー/
■85976 / inTopicNo.2)  Re[1]: キーボードでENTERを押したときイベント制御について
□投稿者/ furu (143回)-(2017/12/06(Wed) 18:59:38)
No85974 (Haru さん) に返信
> しかし、プログラム上ENTERが押されたときにトリガが入っているので、
> 英数字の時はよいのですが、日本語をタイプしているときは、タイプ途中で、
> 変換して、決定キーを押した段階でENTERが押されたとプログラムが判断して、
> タイプ途中なのに処理が実行されてしまいます。

決定キーを押した段階でのENTERはIMEが処理してしまい
プログラムまでこないと思いますが
特殊なプログラムなのでしょうか?

そのトリガは何のイベント(KeyDownとかKeyPressとか)で
どれ(TextBoxとかFormとか)に仕掛けてありますか?

引用返信 編集キー/
■85981 / inTopicNo.3)  Re[2]: キーボードでENTERを押したときイベント制御について
□投稿者/ Haru (2回)-(2017/12/06(Wed) 20:40:29)
furu様


Key Press event に仕掛けてあります。IMEに処理される前にこのイベントがトリガされて処理が走ってしまいます。
仕込んでるロジックは以下のコードになります。
何か実装方法が違うのでしょうか。


private void txtSearch_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (btnSave.Text.Trim() == "Search")
{
bindTagListView();
}
else
{
addTag();
}
}
else
{
bindTagListView();
}
}

引用返信 編集キー/
■85982 / inTopicNo.4)  Re[3]: キーボードでENTERを押したときイベント制御について
□投稿者/ furu (145回)-(2017/12/06(Wed) 21:05:35)
No85981 (Haru さん) に返信
> Key Press event に仕掛けてあります。IMEに処理される前にこのイベントがトリガされて処理が走ってしまいます。
>
> private void txtSearch_KeyUp(object sender, KeyEventArgs e)

「Key Press event に仕掛けてあります」って書かれてますけど
KeyUpに仕掛けてありますよ。


目的に応じ、KeyDownかKeyPressに仕掛けてください。

KeyUpはIMEで処理していないようです。
引用返信 編集キー/
■85988 / inTopicNo.5)  Re[4]: キーボードでENTERを押したときイベント制御について
□投稿者/ Haru (4回)-(2017/12/07(Thu) 11:15:29)
furuさん、

ほんとですね!
これをKey Press Eventに変えて試してみます!

ご指摘いただき、ありがとうございました。


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

このトピックをツリーで一括表示


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

このトピックに書きこむ