- PR -

ImeMode が勝手に変わってしまう

1
投稿者投稿内容
じょんのび
常連さん
会議室デビュー日: 2004/05/06
投稿数: 20
投稿日時: 2006-02-21 21:37
ImeMode が Hiragana に設定されているテキストボックスにフォーカスがある時、MessageBox.Show でメッセージボックスを表示すると、
テキストボックスの ImeMode プロパティの設定値がOff に変わってしまいます。

環境は、VS2005 です。

以下、再現方法及びC#ソースです。
1.フォームにテキストボックスを一つ配置し、ImeMode を Hiragana に設定。
2.以下のソースを記述。(テキストボックス の KeyDown イベントに割り当て)
3.実行し、F9キーを押下すると、現象が発生します。
コード:

namespace Sample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F9)
{
e.Handled = true;
MessageBox.Show("F9が押されました。");
}
}
}
}



.NET のバグの様に思われるのですが、この現象で困られた方はいませんか?
良い回避策などがありましたら、お教え頂けませんでしょうか。

# VB6 でも同様の不具合があった様な気がします。
# 伝統を受け継いでるんでしょうか・・・・・・

[ メッセージ編集済み 編集者: じょんのび 編集日時 2006-02-21 22:00 ]
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-02-21 21:58
わー、ほんとだ。

ImeModeChanged イベントで、ImeMode をチェックして Hiragana でなければ Hiragana にセットしてやれば回避できるようですが。
じょんのび
常連さん
会議室デビュー日: 2004/05/06
投稿数: 20
投稿日時: 2006-02-21 22:15
Hongliang さんの言われる様に、
ImeMode が Hiragana のテキストボックス向けに
ImeModeChanged 用のプロシージャを一つ用意してやるのも、一つの手ですね。

私も Enter イベントで、再セットする方法を考えてはみたのですが、
もう少しスマートな方法はないかなーと思いまして・・・・

最終的に、良い方法が見つけられなければ、
Hongliang さんの方法が、良いかも知れませんね。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-21 23:57
引用:

じょんのびさんの書き込み (2006-02-21 21:37) より:

.NET のバグの様に思われるのですが、この現象で困られた方はいませんか?
良い回避策などがありましたら、お教え頂けませんでしょうか。


と、とりあえず、MSDN フォーラムのフィードバック板で報告してください... orz

引用:

# VB6 でも同様の不具合があった様な気がします。
# 伝統を受け継いでるんでしょうか・・・・・・


VB6 で有名なあの不具合は、結論は外部要因だったような気がしますが。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
じょんのび
常連さん
会議室デビュー日: 2004/05/06
投稿数: 20
投稿日時: 2006-02-22 01:30
とりあえず、フィードバック板にアップしました。

バグフィックスされるのを気長に待ちつつ、
当面は、ImeModeChanged イベントで対処しようと思います。

ご返答くださった方々、ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)