Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Load 1 form và đóng form hiện tại

  1. #1
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Mặc định Load 1 form và đóng form hiện tại

    Hiện tại mình đang làm 1 project, đầu tiên load form login lên sau khi login thì load form main (tuỳ vào ID đang login mà load form main tương ứng), mình muốn là sau khi load form main xong thì form login close. Thử nhiều cách rồi mà ko được. Ai biết chỉ dùm cái.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    10 2007
    Bài viết
    37

    Theo ý của huynguyen thì có 2 form: LoginForm, MainForm
    LoginForm gọi FormMain, sau đó close LoginForm.

    Visual C# Code:
    1. //Để ý trong hàm Main của project có đoạn
    2. Application.Run(new LoginForm());
    3. => Đoạn này có nghĩa là Application lấy form LoginForm làm chủ => đóng LoginForm thì Application exit luôn.
    4.  
    5. Vậy thì mình sửa lại đoạn đó:
    6. LoginForm frm = new LoginForm();
    7. frm.Show();
    8. Application.Run();
    9. => Có nghĩa là chả có form nào đại diện cho Application hết, khi Application run thì chỉ có show LoginForm lên thôi.
    10. => Có thể show bao nhiêu form cũng đc.
    11. => Bất cứ khi nào muốn Close Application thì phải dùng Application.Exit().
    12. //Trong LoginForm khi gọi MainForm
    13. new MainForm(this).ShowDialog();
    14.  
    15. //Trong MainForm
    16. MainForm(LoginForm frm)
    17. {
    18.     //InitializeComponent
    19.     frm.Close();
    20. }
    Đã được chỉnh sửa lần cuối bởi ntcuong : 30-03-2008 lúc 08:49 PM.

  3. #3
    Ngày gia nhập
    11 2007
    Bài viết
    294

    Có thể làm khác ^^!
    Thay đoạn này
    Visual C# Code:
    1. Application.Run(new LoginForm());
    Bằng đoạn này
    Visual C# Code:
    1. Application.Run(new MainForm());
    Sau đó trong đoạn formload của mainform thì gọi LoginForm.showDialog.
    Sau đó gọi hàm phân quyền để thay đổi các thứ trên formmain ^^!
    Is the moon rising...

  4. #4
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Ý định của mình là thế này, nếu là user thì login vào main của user, admin thì login vào main của admin, master thì login vào main của master vì mỗi form khác nhau hết.

  5. #5
    Ngày gia nhập
    03 2008
    Bài viết
    11

    cái này cũng tương đối dễ mà.
    Visual C# Code:
    1. Application.Run(new LoginForm());
    2. if(user==? && pass==? && role==?) // ra cái j ở đây.
    3. else if(user==? && pass==? && role==?) // ra cái j ở đây.
    4. else Messegebox.Show("Login fail");
    Đã được chỉnh sửa lần cuối bởi heeluyn : 30-03-2008 lúc 09:51 PM.

  6. #6
    Ngày gia nhập
    06 2007
    Nơi ở
    TP.HCM
    Bài viết
    113

    Mặc định Load 1 form và đóng form hiện tại

    Trích dẫn Nguyên bản được gửi bởi heeluyn Xem bài viết
    cái này cũng tương đối dễ mà.
    CSharp Code: | Lựa chọn code | Ẩn/Hiện code |
    Application.Run(new LoginForm());
    if(user==? && pass==? && role==?) // ra cái j ở đây.
    else if(user==? && pass==? && role==?) // ra cái j ở đây.
    else Messegebox.Show("Login fail");

    Có vẻ như bạn heeluyn đã hiểu nhầm ý:

    Load form theo cách của bạn ntcuong là chính xác rùi, trong class Program sẽ xác định form nào show khi ứng dụng run. ở câu lệnh: Application.Run(new Form1()); (form hiện lên đầu tiên theo huynguyen là login <=> Form1) nếu cho form login close thì đồng nghĩa với close luôn application. Vậy thì có thể thay đổi cách gọi form login show theo cách củ bằng cách của ntcuong.

    Visual C# Code:
    1.         static void Main()
    2.         {
    3.             Application.EnableVisualStyles();
    4.             Application.SetCompatibleTextRenderingDefault(false);
    5.            
    6.             Form1 frm1 = new Form1();
    7.             frm.Show();
    8.             Application.Run(new Form1());
    9.         }

    Khi form login (Form1) show lên, đăng nhập, gọi Form2 show và close Form1 thì làm bình thường thôi:
    Visual C# Code:
    1.     public partial class Form1 : Form
    2.     {
    3.         public Form1()
    4.         {
    5.             InitializeComponent();
    6.         }
    7.  
    8.         private void button1_Click(object sender, EventArgs e)
    9.         {
    10.             Form2 frm2 = new Form2();
    11.             frm2.Show();
    12.             this.Close();
    13.         }
    14.     }

    Gác Kiếm

  7. #7
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Thx ntcuong và sunflower đã hỗ trợ, mình viết lại code như sau cho ngắn gọn:
    Code:
    static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                new frmLogin().Show();
                Application.Run();
            }
    Code:
    new frmTeacherMain().Show();
                        this.Close();
    Và làm thêm cái này thì cái nút X trên form chỉ là tắt form chứ program thì vẫn chạy ngầm (xem trong task manager).

  8. #8
    Ngày gia nhập
    12 2007
    Bài viết
    1

    Chào Bạn.
    Theo mình làm thì tạo 1 main form chứa các form con.
    - MainForm
    - LoginForm
    - AfterLoginForm
    Mã như sau
    Code:
    public partial class MainForm : Form
        {
            public MainForm()
            {
                InitializeComponent();
            }
            private void closeChildForm()
            {
               // Close all children
                foreach (Form childForm in this.MdiChildren)
                {
                    childForm.Close();
                }
            }
    
            private void MainForm_Load(object sender, EventArgs e)
            {
                //Show Form nao muon hien thi dau tien
            }
    
            private void LoginToolStripMenuItem_Click(object sender, EventArgs e)
            {
                closeChildForm();
                
                LoginForm loginMDIChild = new LoginForm();
                loginMDIChild.MdiParent = this;
                oginMDIChild.Show();
            }
    
            private void AfterLoginFormToolStripMenuItem_Click(object sender, EventArgs e)
            {
                closeChildForm();
    
                AfterLoginForm afterloginMDIChild = new AfterLoginForm();
                afterloginMDIChild.MdiParent = this;
                afterloginMDIChild.Show();
            }
        }
    Chúc bạn thành công.

  9. #9
    Ngày gia nhập
    06 2007
    Nơi ở
    TP.HCM
    Bài viết
    113

    Trích dẫn Nguyên bản được gửi bởi huynguyen Xem bài viết
    Thx ntcuong và sunflower đã hỗ trợ, mình viết lại code như sau cho ngắn gọn:
    Code:
    static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                new frmLogin().Show();
                Application.Run();
            }
    Code:
    new frmTeacherMain().Show();
                        this.Close();
    Và làm thêm cái này thì cái nút X trên form chỉ là tắt form chứ program thì vẫn chạy ngầm (xem trong task manager).
    Xác định form nào là form chính, nếu sau khi login đưa đến form tương ứng thì cho form đó là form chính và dùng Application.Exit(); thay vì this.Close(); có thể trong sự kiện form_Closed....
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

    Gác Kiếm

Các đề tài tương tự

  1. ADO.NET Làm thế nào để khi Form load lên thì nhạc bắt đầu hát cho đến khi form thoát thì thôi
    Gửi bởi huuphat trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 15-07-2012, 10:29 AM
  2. Graphic Cách khác phục việc thiết kế form dùng nhiều control nên khi form load khá lâu
    Gửi bởi killdog9x trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 30-05-2012, 03:08 PM
  3. Click Button load form phụ từ form chính và đóng form 9
    Gửi bởi cktn5590 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 29-02-2012, 10:30 PM
  4. Trả lời: 2
    Bài viết cuối: 22-09-2011, 07:37 PM
  5. Graphic Load lại form mà không phải tạo form mới trong C# làm thế nào?
    Gửi bởi langtu4t trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 02-09-2011, 11:42 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn