ime制御したときにテキストボックスに文字が出ない
- 題名: ime制御したときにテキストボックスに文字が出ない
- 著者: sueくん
- 日時: 2011/10/05 14:17:58
- ID: 29154
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: ime制御したときにテキストボックスに文字が出ない
- 著者: iti
- 日時: 2011/10/05 18:54:49
- ID: 29159
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: ime制御したときにテキストボックスに文字が出ない
- 著者: sueくん
- 日時: 2011/10/06 11:19:21
- ID: 29162
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: ime制御したときにテキストボックスに文字が出ない
- 著者: sueくん
- 日時: 2011/10/06 13:19:25
- ID: 29163
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: ime制御したときにテキストボックスに文字が出ない
- 著者: iti
- 日時: 2011/10/06 20:40:56
- ID: 29169
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: ime制御したときにテキストボックスに文字が出ない
- 著者: iti
- 日時: 2011/10/06 23:11:23
- ID: 29170
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: ime制御したときにテキストボックスに文字が出ない
- 著者: sueくん
- 日時: 2011/10/07 9:36:56
- ID: 29171
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
お世話になります。
以下のコードを下記URLを参考に作成しましたが、
http://yonaizumi.dip.jp/weblog/cappe/2010/06/cime.html
子フォームのテキストボックスに文字を入力しても表示されません。
ただ、親フォームでは入力した文字が取得できます。
子フォームのソースは以下の通りです。
ご指導をお願いいたします。
namespace Project2
{
public partial class Form1 : Form
{
frmtest f0;
public Form1(frmtest f)
{
f0 = f;
InitializeComponent();
}
[DllImport("Imm32.dll", EntryPoint = "ImmGetContext")]
private extern static IntPtr APIImmGetContext(IntPtr hWnd);
[DllImport("Imm32.dll", EntryPoint = "ImmNotifyIME")]
private extern static bool APIImmNotifyIME(IntPtr hIMC, NI dwAction, CPS dwIndex, uint dwValue);
[DllImport("Imm32.dll", EntryPoint = "ImmReleaseContext")]
private extern static bool APIImmReleaseContext(IntPtr hWnd, IntPtr hIMC);
private enum NI : uint
{
OPENCANDIDATE = 0x0010,
CLOSECANDIDATE = 0x0011,
SELECTCANDIDATESTR = 0x0012,
CHANGECANDIDATELIST = 0x0013,
FINALIZECONVERSIONRESULT = 0x0014,
COMPOSITIONSTR = 0x0015,
SETCANDIDATE_PAGESTART = 0x0016,
SETCANDIDATE_PAGESIZE = 0x0017,
IMEMENUSELECTED = 0x0018,
}
private enum CPS : uint
{
COMPLETE = 0x0001,
CONVERT = 0x0002,
REVERT = 0x0003,
CANCEL = 0x0004,
}
// ボタンを押下するとフォームを閉じる
// 親フォームは xxClass.textBox1.Text からそのテキストボックスの値を取得する
private void textBox1_Click(object sender, EventArgs e)
{
this.textBox1.Focus();
IntPtr hIMC = APIImmGetContext(this.Handle);
bool INI = APIImmNotifyIME(hIMC, NI.COMPOSITIONSTR, CPS.COMPLETE, 0);
bool IRC = APIImmReleaseContext(this.Handle, hIMC);
Application.DoEvents();
f0.txtSomeOne.Text = this.textBox1.Text;
this.Close();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.F3:
this.button1.Focus();
this.button1.PerformClick();
break;
}
}
}
}