Announcement

Collapse
No announcement yet.

Cho em hỏi về đóng - mở form chạy trong program main

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C#] Cho em hỏi về đóng - mở form chạy trong program main

    Hiện em đang gặp 1 chút khó khăn về vấn đề này , mong các anh chị giúp đỡ :nosebleed:
    Em để form chính của em chạy trong program là form DangNhap (Đã để luồng thread mặc định cho nó trước hàm main là STAThread (single thread))
    Vì form này của em là form chạy chính trên main program.cs nên khi đóng nó thì chương trình cũng đóng luôn
    Nên em đã khắc phục là tạo ra 1 thread mới
    Code:
    new Thread(new ThreadStart(void)).Start();
    thay thế để chạy khi nhấn button thì form2 hiện lên nhưng mà khi mà mở openfiledialog lên thì báo lỗi :hungry:
    (trước khi click vào openfiledialog)
    question.jpg
    (khi click vào exception thread xảy ra)
    question2.jpg
    Em có tham khảo google trước , như để form chính visible thành false hay hide nó lại cũng không được luôn , đóng form đăng nhập thì form 2 ko hiện lên mà chương trình tắt luôn :surrender:
    Mong các anh chị giúp đỡ em lỗi này :sad:
    Em cám ơn
    Last edited by 11520235; 01-03-2013, 07:35.

  • #2
    em diễn tả anh không hiểu lắm! nhưng anh nghĩ thế này

    ở main program em cứ để bình thường, thay mỗi cái form nào em muốn cho nó show lên đầu tiên thôi (Form1)
    Code:
    static class Program    {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
    trong sự kiện click vào button thì em gọi câu lệnh:

    Code:
    Form2 frmMain = new Form2();
    
    this.Hide();
    frmMain.Show();
    Form2 sẽ hiển thị, Form1 sẽ ẩn đi. anh chạy bình thường
    -----------------------------
    Mai Văn Khải
    Software Engineering, University Information of Technology
    a07d26eb5cbc98f77b36a461eb629456

    Comment


    • #3
      Originally posted by 09520133 View Post
      em diễn tả anh không hiểu lắm! nhưng anh nghĩ thế này

      ở main program em cứ để bình thường, thay mỗi cái form nào em muốn cho nó show lên đầu tiên thôi (Form1)
      Code:
      static class Program    {
              /// <summary>
              /// The main entry point for the application.
              /// </summary>
              [STAThread]
              static void Main()
              {
                  Application.EnableVisualStyles();
                  Application.SetCompatibleTextRenderingDefault(false);
                  Application.Run(new Form1());
              }
          }
      trong sự kiện click vào button thì em gọi câu lệnh:

      Code:
      Form2 frmMain = new Form2();
      
      this.Hide();
      frmMain.Show();
      Form2 sẽ hiển thị, Form1 sẽ ẩn đi. anh chạy bình thường
      cám ơn anh đã chỉ bảo nhưng cũng không được anh ơi , chương trình vẫn bị tắt ngay lập tức . Em chuyển thread thì mở được nhưng gặp phải lỗi trên :sad:
      nếu hide form chính trên main thì báo lỗi ko thể giải phóng bộ nhớ (dispose) :sad:
      Mới thử 1 hồi thì em thấy là nếu để trong if thì showdialog form lên nó không chạy mà tắt luôn ??? , còn để ngoài thì đc ?
      Last edited by 11520235; 01-03-2013, 09:40.

      Comment


      • #4
        [MENTION=11174]nam[/MENTION] : Em tác động đến giao diên từ một Thread khác. Điều này sẽ phát sinh ra lỗi. Vì để quản lý giao diện form, có 1 thread làm rồi. Mà em dùng thread khác tác động vào nữa, thì nó sẽ k thể đảm bảo an toàn rằng tài nguyên dùng chung (ở đây là form) giữa 2 thread có thể làm việc chính xác, đồng bộ

        Em thử tham khảo link này xem :
        Learn how to implement multithreading in your app by calling cross-thread controls in a thread-safe way.


        Cross -thread call
        nguyendauit@gmail.com

        Comment


        • #5
          Originally posted by 10520100 View Post
          [MENTION=11174]nam[/MENTION] : Em tác động đến giao diên từ một Thread khác. Điều này sẽ phát sinh ra lỗi. Vì để quản lý giao diện form, có 1 thread làm rồi. Mà em dùng thread khác tác động vào nữa, thì nó sẽ k thể đảm bảo an toàn rằng tài nguyên dùng chung (ở đây là form) giữa 2 thread có thể làm việc chính xác, đồng bộ

          Em thử tham khảo link này xem :
          Learn how to implement multithreading in your app by calling cross-thread controls in a thread-safe way.


          Cross -thread call
          Vậy anh ơi cho em hỏi là nếu em xài code như thế này
          Code:
          this.hide();
          check_account() // void
          if(bool_checkadmin)
          {
              new FormAdmin().ShowDialog();
          }
          if(bool_checkuser)
          {
             new FormUser().ShowDialog();
          }
          thì form không chạy được , chương trình tắt ngay
          còn
          Code:
          this.hide();
          new FormAdmin().ShowDialog();
          //check_account() // void
          //if(bool_checkadmin)
          //{
          //    new FormAdmin().ShowDialog();
          //}
          //if(bool_checkuser)
          //{
          //   new FormUser().ShowDialog();
          //}
          thì được , nếu mở form trong if thì không được ??? :surrender:

          Comment


          • #6
            Em send project cho anh xem đc k ?
            1 là upload lên mediafire,
            nếu k thì em send qua mail cũng đc : nguyendauit@gmail.com

            Hi vọng giúp đc e !
            nguyendauit@gmail.com

            Comment


            • #7
              anh thấy được mà. em chạy cái này thử coi có đúng ý em không nhé

              hoặc là anh hiểu sai ý em...
              Attached Files
              -----------------------------
              Mai Văn Khải
              Software Engineering, University Information of Technology
              a07d26eb5cbc98f77b36a461eb629456

              Comment


              • #8
                Originally posted by 10520100 View Post
                Em send project cho anh xem đc k ?
                1 là upload lên mediafire,
                nếu k thì em send qua mail cũng đc : nguyendauit@gmail.com

                Hi vọng giúp đc e !
                Originally posted by 09520133 View Post
                anh thấy được mà. em chạy cái này thử coi có đúng ý em không nhé

                hoặc là anh hiểu sai ý em...
                Cám ơn 2 anh đã giúp đỡ , em đã tìm ra được lý do rồi . Do em để hide trước hàm xử lý tài khoản nên nó không có dữ liệu để xử lý :funny:
                Code:
                this.hide();  // Em sai khúc này , do hide cái form trước
                check_account() //nên khúc này nó không có đối tượng của this để chạy đúng hàm này
                if(bool_checkadmin) // cái bool này false
                {
                    new FormAdmin().ShowDialog();
                }
                if(bool_checkuser) // cái bool này cũng false nên chương trình tắt luôn là đúng :D
                {
                   new FormUser().ShowDialog();
                }
                Tiện các anh giúp em thêm 1 cái nữa là : load ảnh từ database lên listview làm sao ạ ? em cũng có google trước mà code không được :sad:
                Em có thử cách thêm cái ImageList vào form rồi add cái imagelist này vào LargeImageList của listview nhưng chạy không được :sad:
                question3.jpg
                Em muốn thêm hình ảnh sản phẩm vào 1 cột nữa tên là Hình ảnh
                Mong các anh giúp đỡ :beauty:

                Comment

                LHQC

                Collapse
                Working...
                X