我正在使用Windows 6专业移动设备开发C#应用程序。我想在用户点击状态栏然后显示列表框时检测事件。 .NET CF状态栏没有按键或文本已更改或父更改以外的事件。我该如何处理这个问题?
谢谢,
答案 0 :(得分:0)
我实际上并没有尝试过这样的YMMV,但如果我必须解决问题,我可能会尝试子类化父表单并在StatusBar所在的区域中查找鼠标消息。有an article in MSDN magazine涵盖了Compact Framework中的子类,它可以让你获得95%的成功。
答案 1 :(得分:0)
如果您谈论Soft Input Panel,则必须添加对Microsoft.WindowsCE.Forms
的引用,然后将输入面板控件拖放到表单上。
此处的C ++示例代码:http://support.microsoft.com/kb/264034
基本上,只需连接Input Panel
控件的唯一事件。不久前我做了类似的事情:
void SIP_EnabledChanged(object sender, EventArgs e) {
int locationY = Y_START; // defined as txtNote.Location.Y when the form loads
if (inputPanel1.Enabled) {
locationY -= inputPanel1.Bounds.Height;
}
txtNote.SuspendLayout();
txtNote.Bounds = new Rectangle(
txtNote.Location.X,
locationY,
txtNote.Size.Width,
txtNote.Size.Height
);
txtNote.ResumeLayout();
txtNote.Refresh();
}
答案 2 :(得分:0)
Control.Capture应该可以帮到你: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.capture%28v=vs.80%29.aspx
在Form的构造函数中,将Capture属性设置为True:
this.Capture = true;
然后将鼠标事件处理程序添加到您的表单。 例如:
// This method handles the mouse down event for all the controls on the form.
// When a control has captured the mouse
// the control's name will be output on label1.
private void Control_MouseDown(System.Object sender,
System.Windows.Forms.MouseEventArgs e)
{
Control control = (Control) sender;
if (control.Capture)
{
label1.Text = control.Name+" has captured the mouse";
}
}
即使儿童控制点击也会被提升。