我想要发生的是,当单击一个文本框时,弹出的键盘会显示,键盘上的任何键入都会被放入文本框中,但没有任何反应,但是当我使用记事本时,它可以正常工作。我该如何解决这个问题?
这是我的主要表单代码:
private void textBox1_MouseClick(object sender, MouseEventArgs e)
{
Form1 frm1 = new Form1();
frm1.ShowDialog();
}
这是弹出键盘的代码
public partial class Form1 : Form
{
const int WS_EX_NOACTIVATE = 0x08000000;
//this line of code fixed the issue
[DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]
public static extern IntPtr GetDesktopWindow();
public Form1()
{
InitializeComponent();
}
protected override CreateParams CreateParams
{
get
{
CreateParams param = base.CreateParams;
param.ExStyle |= WS_EX_NOACTIVATE;
//This line of code fix the issues
param.Style = 0x40000000 | 0x4000000;
param.Parent = GetDesktopWindow();
return param;
}
}
private void button1_Click(object sender, EventArgs e)
{
SendKeys.Send("1");
}
private void button3_Click(object sender, EventArgs e)
{
SendKeys.Send("2");
}
private void button4_Click(object sender, EventArgs e)
{
SendKeys.Send("3");
}
private void button2_Click(object sender, EventArgs e)
{
}
}
答案 0 :(得分:0)
使用form1.Show()
...而不是ShowDialog()
答案 1 :(得分:0)
如果你手动添加了testbox,请确保你像这样挂钩MouseEventHandler:
this.textBox1.MouseClick + = new System.Windows.Forms.MouseEventHandler(this.textBox1_MouseClick);
表单加载时。
答案 2 :(得分:0)
我通过添加这行代码修复了这个问题
[DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]
public static extern IntPtr GetDesktopWindow();
和
param.Style = 0x40000000 | 0x4000000;
param.Parent = GetDesktopWindow();