Tho*_*mas 5 c# winapi winforms
当鼠标放在上面时,我正在寻找获取表单名称的技巧.假设我有一个mdi形式和许多sdi形式,如form1,form2,form3和所有sdi形式都打开.假设我有一个在form1上运行的计时器,它将定期运行.我想在鼠标位于任何SDI窗体窗口上时,从计时器刻度事件中显示form1标签上的表单名称.
这样我试着去做.这是代码
private void timer1_Tick(object sender, EventArgs e) {
var handle = WindowFromPoint(Cursor.Position);
if (handle != IntPtr.Zero) {
var ctl = Control.FromHandle(handle);
if (ctl != null) {
label1.Text = ctl.Name;
return;
}
}
label1.Text = "None";
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr WindowFromPoint(Point pos);
Run Code Online (Sandbox Code Playgroud)
上面的代码运行完美,但有一些小故障.当我将鼠标放在MDI表单或Form1上时,表单名称显示在form1上,但是当我将鼠标放在Form2或Form2上时,他们的名字没有显示.我无法理解此代码中的问题.请指导我解决它.
既然您拥有控制权,我认为您只需要使用该FindForm()功能:
var ctl = Control.FromHandle(handle);
if (ctl != null) {
var form = ctrl.FindForm();
if (form != null) {
label1.Text = form.Name;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
238 次 |
| 最近记录: |