tôi đang tìm kiếm mẹo để lấy tên biểu mẫu khi chuột đặt trên đó. giả sử tôi có một hình thức mdi và nhiều hình thức sdi như form1, form2, form3 và tất cả các hình thức sdi được mở ra. giả sử tôi có một bộ đếm thời gian chạy trên form1 và sẽ chạy theo định kỳ. tôi muốn hiển thị tên biểu mẫu trên nhãn của form1 từ sự kiện đánh dấu thời gian khi chuột được định vị trên bất kỳ cửa sổ biểu mẫu SDI nào.Cách phát hiện tên biểu mẫu khi chuột ở bất kỳ hình thức SDI nào
cách này tôi cố gắng thực hiện. đây là mã số
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);
mã trên chạy hoàn toàn nhưng có một số trục trặc. khi tôi đặt chuột vào mẫu MDI hoặc trên Form1 thì tên biểu mẫu được hiển thị trên form1 nhưng khi tôi đặt chuột lên Form2 hoặc Form2 thì tên của chúng không hiển thị. tôi không thể hiểu được vấn đề trong mã này là gì. hãy hướng dẫn tôi sửa nó.
Ý anh là gì bởi "chuột là vào nó"? Bạn có nghĩa là lơ lửng trên nó, mà không nhất thiết phải kích hoạt các hình thức, hoặc rằng hình thức là hình thức hoạt động trong số các trẻ em, tức là một trong đó đã tập trung? –
Tôi đã chỉnh sửa tiêu đề của bạn. Vui lòng xem, "[Câu hỏi có nên bao gồm" thẻ "trong tiêu đề của họ không?] (Http://meta.stackexchange.com/questions/19190/)", trong đó sự đồng thuận là "không, họ không nên". –