2009-10-27 44 views
6

Sử dụng Windows Forms Tôi muốn có một màn hình đăng nhập nhỏ mà người dùng cho phép mình (thông qua Form1), vì vậy ứng dụng chính (ví dụ Form2) sẽ được mở sau khi đăng nhập. Nhưng tôi cho rằng khi tôi sử dụng Application.Run (Form1), sau khi đóng, toàn bộ ứng dụng sẽ đóng lại.Windows Forms: tạo ứng dụng chính sau khi đăng nhập, biểu mẫu nào để chạy?

Không có cách nào khác ngoại trừ việc sử dụng Form2 vô hình? Một cái gì đó như chạy Form2 theo yêu cầu và đóng ban đầu chạy Form1? Hy vọng điều đó có ý nghĩa với bạn :)

+0

[Xem câu trả lời của tôi cho câu hỏi này] (http://stackoverflow.com/questions/1623695/how-to-end-process-after-closing-whole-application-in-c-net/1623878#1623878) –

+0

Tôi đoán nó có thể dễ dàng thực hiện bắt đầu từ LoginForm từ trong sự kiện tải trọng MainForm. Tôi đã giải thích tại đây: http://walaapoints.blogspot.com/2011/06/login-form-main-form.html –

Trả lời

10

Tạo một tình trạng quá tải của System.Windows.Forms.ApplicationContext, tạo Form1 đầu tiên và sau đó Form2 trong constructor của nó.

Sử dụng Application.Run quá tải chấp nhận đối tượng ApplicationContext.

+3

+1. Ngoài ra còn có một bài viết về CodeProject (http://www.codeproject.com/KB/cs/applicationcontextsplash.aspx) cho thấy cách tạo một màn hình giật gân trước biểu mẫu chính bằng cách sử dụng 'ApplicationContext', nhưng cũng có một lời giải thích đơn giản về cách toàn bộ sự việc hoạt động. – Groo

-1

Hãy thử phương pháp này. Từ dòng chính của chương trình tạo lớp biểu mẫu chính của bạn, từ bên trong lớp này có chức năng "go" gọi ra biểu mẫu đăng nhập. Nếu hàm này trả về true, bạn có thể thực hiện cuộc gọi đến Application.Run (biểu mẫu).

MainForm form = new MainForm(); 
form.Show(); 
if (form.go()) 
{ 
    Application.Run(form); 
} 
else 
{ 
    form.Close(); 
} 

class MainForm 
{ 
    public bool go() 
    { 
    LoginFrom lf = new LoginForm() 
    if (lf.ShowDialog() != DialogResult.OK) 
    { 
     return false; 
    } 
    } 
} 

Một chút đơn giản có lẽ nhưng nó sẽ giúp bạn đi đúng hướng.

3

Bạn có thể gọi hình thức xác thực của bạn trước khi bắt đầu lên hình thức ứng dụng chính của bạn bên trong Program.cs (tên mặc định), chẳng hạn như:

static void Main() 
    { 
     Form1 f1 = new Form1(); 
     DialogResult dr = f1.ShowDialog(); 
     if (dr == DialogResult.OK) 
     { 
      Application.Run(new Form2()); 
     } 
     else 
     { 
      Application.Exit(); 
     } 
    } 

Bên trong Form1 nếu họ đúng cách xác thực sau đó bạn chỉ cần kết thúc với:

this.DialogResult = DialogResult.OK; 
    this.Close(); 

Nếu xác thực thất bại, bạn có thể cho phép họ tái nỗ lực xác thực, cung cấp cho họ một số tối đa của những nỗ lực, vv Sau đó, khi bạn quyết định họ đã có quá nhiều chỉ cần gọi

Application.Exit(); 
0

Hãy thử sử dụng các thiết lập về tính chất dự án

  1. Đến tính
  2. Đến tab thiết lập dự án, và tạo lập 'lcheck' kiểu bool và giá trị là 'false'
  3. Hãy Form1 là hình thức chính và form2 được đăng nhập dưới dạng
  4. Sử dụng vòng lặp while trong chức năng formload form1- như

    while(System.properties.default.lcheck!=true) 
    { 
        authentication process: 
    } 
    

Lưu ý: Tôi có nghi ngờ về quy trình này. Ai đó có thể thay đổi cài đặt từ thư mục appdata của ứng dụng.

Các vấn đề liên quan