我有一个Windows窗体,它使用DevExpress(虽然我不确定这是否是问题的一部分)用于在csharp中生成电子邮件。当内容输入到控件中时(例如,从查找中选择一个电子邮件地址,将输入的内容输入到消息字段中),我无法再通过单击该字段来设置光标。
双击可以选择文本部分,然后可以使用箭头键显示和移动光标 - 但不能再次单击。
表单上有许多不同的控件,包括DevExpress LookupEdit和备注字段 - 但对于遇到的问题,控件类型似乎并不重要 - 添加不同的控件也有同样的问题。 / p>
我无法找到我认为可能导致此问题的任何设置或配置 - 是否有其他人遇到过这样的问题并且可以解决问题?
谢谢!
乔恩
答案 0 :(得分:0)
找到答案 - 这是遇到的问题:
Windows Forms: Unable to Click to Focus a MaskedTextBox in a Non TopLevel Form
使用父级将表单打开为toplevel = false,但作为对话框因此未被激活 - 这就是为什么可以访问它但不处理某些窗口事件(如鼠标单击)。
很奇怪,但删除标题栏(formborderstyle = none)修复了问题!
最终解决方案似乎与父表单在子表单上的设置方式有关。在我的实例中,我们需要将表单限制在父级的范围内并且能够被移动,所以无边框并没有真正解决问题。这是做什么的: -
// Declaration
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
// Displaying child form
SetParent(modalForm.Handle, this.Handle);
modalForm.Show();