Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Gộp menustrip của child form vào menustrip của parent form

  1. #1
    Ngày gia nhập
    05 2011
    Bài viết
    299

    Mặc định Gộp menustrip của child form vào menustrip của parent form

    Mình đang xem 1 ebook về Window Form hướng dẫn bằng visual studio 2003 về phần làm 1 mdi đơn giản nhưng mà mình làm theo mãi vẫn không được(mình dùng visual studio 2010 nên có 1 số property bị đổi tên). Bạn nào biết làm thì chỉ mình với
    Đây là 2 hình mẫu

    Sau khi chạy chương trình thì menu View ở childform hiện chung với menu File và Window của parent form, còn ở child form không còn nữa
    Attached Thumbnails Attached Thumbnails SDI.png   MDI.png  
    Programming tutorials and source code examples

    Trong nhà không vợ không con
    Uống bia gặm thịt sao ngon thế này
    Nhậu nhẹt không bị la rầy
    Một tuần ta cứ bảy ngày " nâng ly "....

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

    menuStripOfParent.AllowMerge = false;

  3. #3
    Ngày gia nhập
    05 2011
    Bài viết
    299

    không được bạn ơi
    mình gửi bạn project, bạn xem dùm mình với
    Attached Files Attached Files
    Programming tutorials and source code examples

    Trong nhà không vợ không con
    Uống bia gặm thịt sao ngon thế này
    Nhậu nhẹt không bị la rầy
    Một tuần ta cứ bảy ngày " nâng ly "....

  4. #4
    Ngày gia nhập
    10 2011
    Bài viết
    14

    Trích dẫn Nguyên bản được gửi bởi rossoneri Xem bài viết
    không được bạn ơi
    mình gửi bạn project, bạn xem dùm mình với
    Lỗi ở code tạo Layout control menustrip.
    Cái thuộc tính AllowMerge mặc định luôn là true.
    Nhưng Có lúc merge được có lúc không.
    Phú đã thử tạo ra menustrip add vào MainForm bằng code dynamic thế này:
    Visual C# Code:
    1. private void AddMenuStrip(System.Windows.Forms.Form frm)
    2.         {
    3.             frm.SuspendLayout();
    4.            
    5.             // Add MenuStrip:
    6.             System.Windows.Forms.MenuStrip mnStripParent = new System.Windows.Forms.MenuStrip();
    7.             mnStripParent.AllowMerge = true;
    8.             frm.Controls.Add(mnStripParent);
    9.  
    10.             // File:
    11.             mnStripParent.Name = "menuStrip1";
    12.             System.Windows.Forms.ToolStripMenuItem tStripFile = new System.Windows.Forms.ToolStripMenuItem();
    13.             tStripFile.Name = "tStripFile";
    14.             tStripFile.Text = "File";
    15.             tStripFile.MergeAction = MergeAction.Insert;
    16.             tStripFile.MergeIndex = 1;
    17.  
    18.             mnStripParent.Items.Add(tStripFile);            
    19.  
    20.             // New
    21.             System.Windows.Forms.ToolStripMenuItem tStripNew = new System.Windows.Forms.ToolStripMenuItem();
    22.             tStripNew.Name = "tStripNew";
    23.             tStripNew.Text = "New";
    24.             tStripNew.Click += new EventHandler(tStripNew_Click);
    25.             tStripFile.DropDownItems.Add(tStripNew);
    26.  
    27.             frm.ResumeLayout();
    28.             frm.PerformLayout();            
    29.         }
    => Merge lúc được lúc không!(Chẳng hề thay đổi gì chỉ xóa form làm lại).
    => Mình nghĩ project bạn đưa cũng bị như thế. Điều quái lạ ở cái thuộc tính AllowMerge này.
    => Mình tạm thời đưa ra giải pháp tự giả lập thuộc tính AllowMerge riêng, bạn thêm code vào là uke:
    Visual C# Code:
    1. private void Merge_View(MainForm frmParent, EditForm frmChild)
    2.         {
    3.             // Fisrt: Set modifier of editForm's menuStrip1 is: public.
    4.             // Then =>
    5.             ToolStripItem mn = frmChild.menuStrip1.Items["viewToolStripMenuItem"]; // Get View
    6.             frmChild.menuStrip1.Items.Remove(mn); // Remove View on Child
    7.             if (frmParent.menuStrip1.Items["viewToolStripMenuItem"] == null)
    8.             {
    9.                 frmParent.menuStrip1.Items.Add(mn); // Add View to Parent
    10.             }
    11.             frmChild.FormClosed += new FormClosedEventHandler(frmChild_FormClosed);
    12.         }
    13.  
    14.         private void frmChild_FormClosed(object sender, FormClosedEventArgs e)
    15.         {
    16.             if (this.MdiChildren.Length == 1)
    17.             {
    18.                 ToolStripItem mn = this.menuStrip1.Items["viewToolStripMenuItem"]; // Get View
    19.                 if (mn != null)
    20.                 {
    21.                     this.menuStrip1.Items.Remove(mn);
    22.                 }
    23.             }
    24.         }
    => Call Merge chổ này:
    Visual C# Code:
    1. private void miNew_Click(object sender, EventArgs e)
    2.         {
    3.             EditForm ef = new EditForm();
    4.             ef.MdiParent = this;
    5.             Merge_View(this, ef); // <= Đã call.
    6.             ef.Show();
    7.         }

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

  1. Tìm Tool về vấn đề MDI Parent Child Form Load như trong hình
    Gửi bởi dongtrien trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 6
    Bài viết cuối: 17-12-2013, 01:34 PM
  2. Không maximun form con được khi sài menuStrip trên winform
    Gửi bởi haucanpop6590 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 26-08-2013, 12:15 PM
  3. Thể hiện tên ActiveMdiChild trên Menustrip của Main form
    Gửi bởi nguyenlonganh trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 12-01-2013, 09:32 AM
  4. Hiển thị trạng thái của 1 form lên Menustrip
    Gửi bởi Forever Love trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 9
    Bài viết cuối: 02-05-2010, 09:25 AM
  5. Làm sao hiển thị icon của 1 form lên menustrip
    Gửi bởi khabin trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 11
    Bài viết cuối: 02-02-2010, 04:03 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