2011-12-11 41 views
7

Tôi làm cách nào để tập trung vào biểu mẫu? .Focus() không hoạt động đối với tôi.Làm cách nào để tập trung vào biểu mẫu?

private void button1_Click(object sender, EventArgs e) { 
    var form = new loginForm(); 
    if (Application.OpenForms[form.Name] == null) { 
      form.Show(); 
    } else { 
     form.Focus(); 
    } 
} 

Tôi đang làm gì sai?

Trả lời

6

nó phải được

private void button1_Click(object sender, EventArgs e) { 
    var form = new loginForm(); 
    if (Application.OpenForms[form.Name] == null) { 
      form.Show(); 
    } else { 
     Application.OpenForms[form.Name].Focus(); 
    } 
} 
+0

không hoạt động đối với tôi. nếu biểu mẫu được thu nhỏ và tôi bấm vào button1 forme không được kích hoạt (được đặt trong tiêu điểm). – Jack

+0

xin lỗi, bạn có thấy bản chỉnh sửa không? bạn đã thử cái nào Chọn() hoặc Lấy nét()? –

+0

hoạt động tốt ngay bây giờ. Cảm ơn! nhưng do tò mò, tại sao tham chiếu đến biến 'form' không hoạt động? – Jack

14

Bạn cần để hiển thị các hình thức đầu tiên - sử dụng Show() phương pháp:

var form = new loginForm(); 
form.Show(); 

Edit: (cập nhật câu hỏi)

Đối với một hình thức hiện gọi Activate() có thể thích hợp hơn, điều này cũng mang lại biểu mẫu ở phía trước:

private void button1_Click(object sender, EventArgs e) 
{ 
    var form = new loginForm(); 
    if (Application.OpenForms[form.Name] == null) 
    { 
      form.Show(); 
    } 
    else 
    { 
     Application.OpenForms[form.Name].Activate(); 
    } 
} 

Nếu biểu mẫu được thu nhỏ, bạn cần phải subscri có sự kiện Activated để thay đổi trạng thái cửa sổ của bạn để FormWindowState.Normal:

private void loginForm_Activated(object sender, EventArgs e) 
{ 
    this.WindowState = FormWindowState.Normal; 
} 
+0

rigth, tôi chỉnh sửa, kiểm tra mã thật của tôi xin vui lòng. :) – Jack

8

Hãy thử điều này:

this.BringToFront(); 
this.Activate(); 
Các vấn đề liên quan