Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

[Hỏi - C#] việc đóng form thoát chương trình

21:07 26-06-2017 29.411 lượt xem 9 bình luận 10:50 03-02-2018

Vấn đề nghe có vẻ hết sức dễ, nhưng hiện code chạy lung tung, chưa đúng yêu cầu (khi thoát thì nó hiện thông báo hỏi thoát 2 lần <= dư). Mong ace giúp với!

Vấn đề như sau: khi chạy chương trình => mở form fLogin (2 buttun: btnLogin + btnExit)

  • btnLogin: đăng nhập thành công => mở form fMain
  • btnExit (hoặc đóng form bằng biểu tượng "X" trên thanh title): hiện MessageBox hỏi nguười dùng có thật sự muốn thoát hay không? (Yes => thoát chương trình)
// code form fLogin
private void fLogin_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("Bạn có chắc là muốn thoát không?", "Quản Lý Quán Cafe", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
            {
                e.Cancel = true;
            }
        }

private void btnExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

private void btnLogin_Click(object sender, EventArgs e)
        {
            if (Login())
            {
               fMain f = new fMain();

               this.Hide();
            
               f.ShowDialog();
               
               this.Show();
            }
        }

void Login()
        {
            //code login
        }

Ở form fMain có 2 button (btnLogout + btnExit)

  • btnLogout: đóng form fMain, đồng thời mở lại form fLogin
  • btnExit (hoặc đóng form bằng biểu tượng "X" trên thanh title): hiện MessageBox hỏi nguười dùng có thật sự muốn thoát hay không? (Yes => thoát chương trình) () giống như form fLogin
// code form fMain
private void fMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("Bạn có chắc là muốn thoát không?", "Quản Lý Quán Cafe", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
            {
                e.Cancel = true;
            }
        }

private void btnExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

private void btnLogout_Click(object sender, EventArgs e)
        {
            this.Close();
        }

 

 

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
nguyenanhkhoaweb đã bình luận 10:50 03-02-2018

fMain f = new fMain();

this.Hide();

f.ShowDialog();

this.Show();

phải sửa thành

fMain f = new fMain();

fLogin l=new fLogin();

this.Hide();

f.ShowDialog();

l.Show();

 mới sử dụng được

không bao giờ bó tay đã bình luận 21:15 27-06-2017

Có thể tóm gọn yêu cầu như thế này!

Chạy chương trình => mở formA, lick vào button trên A để truyền tham số cho formB và mở formB và ẩn formA đi

Khi ngời dùng ở formB muốn:

  • Đăng xuất: thì đóng formB đồng thời mở lại formA
  • Thoát chương trình: hiện thông báo xác nhận, Yes => thoát.

Ở formA trương tự: tức người dùng muốn:

  • Đăng nhập: thì truyền tham số và mở formB đồng thời ẩn formA đi
  • Thoát chương trình: hiện thông báo xác nhận, Yes => thoát.

p/s: Cái vấn đề truyền tham số giữa các form mình làm theo hướng dẫn của Kteam được rồi!

Mong các "võ lâm đồng đạo" giúp đỡ, tks!

K9 SuperAdmin, KquizAdmin, KquizAuthor đã bình luận 10:51 27-06-2017

Bỏ event form closing của form2 đi là được nhé bạn

꧁༒Hell Demons༒꧂ đã bình luận 00:50 27-06-2017

Hoàng Công Hòa

Chưa được thì inbox vào fb trên!

Accodius đã bình luận 22:10 26-06-2017

Mình không biết có giúp gì cho bạn không nhưng mình thấy code có vẽ bất đồng thế nào ấy,
Bạn bắt sự kiện formclosing nhưng khi tạo form mới lại cho hide form cũ chứ không đóng: 

=>như vậy nếu mình click liên tục nút login và logout thì nó tạo form rồi hide đi liên tục đúng không  => rất nhiều form(*) => ít nhất 2 cái nếu mình bấm chỉ login 1 lần

Chưa tính bạn bắt sự kiện nút exit lại cho app close như vậy liệu nó có bắt formclosing không (có : 90%), và nếu bắt thì lúc đó khi mình tạo rất nhiều form (như mình giải thích ở trên) app.close sẽ đóng tất cả các form mà bạn đã tạo(*), mỗi form như vậy bắt 1 cái closing, 2 đến 3 cái là còn may

Câu hỏi mới nhất