Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 4 123 ... CuốiCuối
Kết quả 1 đến 10 của 37
  1. #1

    Hướng dẫn AddTab con (động) vào XtraTabControl trong DevExpress

    Xin chào các bạn!!
    Mai thứ 7 làm nghỉ sớm nên hôm nay ngồi mò lại cái code mình code cũng lâu rồi (Tìm tòi mãi đấy nhé)
    Vì thấy có một số bạn muốn Add tab lên Tabcontrol mà không hiểu hoặc không biết cách add
    Bài viết này mình viết có 1 số chỗ hơi "gà" mong các bạn đừng chê nhé.(tâm huyết lắm đấy).

    Bắt đầu.
    - Đầu tiên. Mình tạo ra một Project dạng Library để xây dựng hàm AddTab và Build nó thành File . DLL để sử dụng ở nhiều Project khác nhau (hình 1).

    - Trong đó mình viết Hàm AddTab này. Code đây có Comment đọc dễ hiểu nhé[IMG]images/smilies/biggrin.png[/IMG]

    Mã:
    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;using System.Windows.Forms.VisualStyles;using System.Windows.Forms.Layout;using DevExpress.XtraEditors;using System.Drawing;namespace AddTab{    public class TabAdd   {        // Xây dựng hàm dùng để add XtratabPage và XtraTabcontrol (Hàm này đặt trong Project có dạng Library để Build thành file .dll . Mục đích : viết 1 lần nhưng sử dụng cho nhiều Project khác nhau)            // Sử dụng 4 đối số truyền vào cho hàm này gồm có:            //1> DevExpress.XtraTab.XtraTabControl XtraTabCha : Tạm gọi là Tab Cha vì XtraTabControl này để mình quăng tabcon vào            //2> string icon : Khi add Tab con vào Tab cha thì đối số này để quy định icon hình cho tabCon(XtraTabpage)            //3> string TabNameAdd : Khi add tab con vào thì đối số này quy định tên của Tabcon vừa Add vào đó.            //4> System.Windows.Forms.UserControl UserControl: Cái này dùng để Add cái UserControl do ta tạo vào Tabcon           // Đướng đi: Khi gọi hàm này phải truyền vào 4 đối số để biết:                             //Anh muốn add 1 cái Tab con vào cái tab Cha nào?                            // Anh muốn đặt tên Tab con đó tên là gì?                            // anh muốn cái Tab con khi add vào thì Icon của nó là gì?                            // Anh muốn đặt cái gì vào trong cái Tab Con đó trước khi quăng nó lên TAb Cha?            // Note : Các bạn có thể tùy biến nhiều đối số khác nữa nhé.        public void AddTab(DevExpress.XtraTab.XtraTabControl XtraTabCha,string icon,string TabNameAdd,System.Windows.Forms.UserControl UserControl )        {            // Khởi tạo 1 Tab Con (XtraTabPage)         DevExpress.XtraTab.XtraTabPage TAbAdd =new DevExpress.XtraTab.XtraTabPage();            // Đặt đại cái tên cho nó là TestTab (Đây là tên nhé)        TAbAdd.Name = "TestTab";            // Tên của nó là đối số như đã nói ở trên        TAbAdd.Text = TabNameAdd;        // Add đối số UserControl vào Tab con vừa khởi tạo ở trên        TAbAdd.Controls.Add(UserControl);            // Dock cho nó tràn hết TAb con đó        UserControl.Dock = DockStyle.Fill;        try        {            // Icon của Tab con khi add vào Tab cha sẽ được quy định ở đây(cái này các bác tự chọn đường dẫn đến file Icon đó nhé)            TAbAdd.Image = System.Drawing.Bitmap.FromFile(System.Windows.Forms.Application.StartupPath.ToString() + @"\Icons\" + icon);         }        catch (Exception e)        {         }        // Quăng nó lên TAb Cha (XtraTabCha là đối số thứ nhất như đã nói ở trên)         XtraTabCha.TabPages.Add(TAbAdd);        }    }}
    - Sau đó Build nó để lấy được File .DLL nhé.

    Vậy là xây dựng xong .DLL để AddTab con lên tab cha khá đơn giản
    - Tiếp tục ta sẽ tạo ra 1 Project khác gồm có 1 RibbonForm, 1 thư mục để chứa UserControl (như trong hình 2)

    - Ta đã có File DLL để AddTab vậy thì ta add referen đến File DLL đó nhé.
    - Tiếp đến tạo 2 UserControl trên là SinhVien và Lop đặt trong thư mục Usercontrol . Kéo đại vài Control vào 2 cái UserControl đó.
    - Trên Ribbon Form Tạo ra 2 Button tên là Sinh Vien và Lop để khi bấm vào nó thì Add Tab con chứa User control lên TAb Cha (TabMain)
    - Kéo XtraTAbControl bên Toolbox vào (ở đây mình đătj tên cho nó là XtraTabControl1 @@, Nhớ Dock nó = Fill nhé)
    - Khởi tạo Class AddTab

    Mã:
    AddTab.TabAdd clsAddTab = new TabAdd(); //Chuẩn bị lấy cái DLL xài nè:D
    - Trong sự kiện Click của Button thứ nhất Code như sau:

    Mã:
    private void barButtonItem1_ItemClick(object sender, ItemClickEventArgs e)        {            // Kiểm tra khi bấm nút Sinh Viên: Nếu đã có TAb này rồi thì không Add vào nữa            // mà nó sẽ chuyển focus tới TAb Sinh Viên này            int t=0;            foreach (DevExpress.XtraTab.XtraTabPage tab in xtraTabControl1.TabPages )            {            if (tab.Text=="Sinh Viên")            {                xtraTabControl1.SelectedTabPage   = tab;            t=1;            }            }            if (t==1)            {                        }            else            {// Nếu chưa có TAb này thì gọi hàm Addtab xây dựng ở trên để Add Tab con vào                clsAddTab.AddTab(xtraTabControl1,"","Sinh Viên",new SinhVien() );            }                   }
    - Tương tự ở Button thứ 2 nhé.
    + Bây giờ ta tạo ra cái Button trên XtraTabControl để khi bấm vào nó thì xóa cái Tab con đang focus ra khỏi Tab cha(Hinh 3)

    - Mở Code trong File Design Của cái Ribbon Form , tìm đến chỗ mà nó khởi tạo ra cái TabMain đó.

    Mã:
    // xtraTabControl1            //             this.xtraTabControl1.Dock = System.Windows.Forms.DockStyle.Fill;// Viết thêm cái dòng này để tạo ra cái button header đó            this.xtraTabControl1.HeaderButtons = DevExpress.XtraTab.TabButtons.Close;// them dong nay de cai nut do xuat hien o tat ca cac tab            xtraTabControl1.ClosePageButtonShowMode = DevExpress.XtraTab.ClosePageButtonShowMode.InAllTabPagesAndTabControlHeader;            this.xtraTabControl1.Location = new System.Drawing.Point(0, 145);            this.xtraTabControl1.Name = "xtraTabControl1";            this.xtraTabControl1.Size = new System.Drawing.Size(790, 423);            this.xtraTabControl1.TabIndex = 2;            this.xtraTabControl1.ControlAdded += new System.Windows.Forms.ControlEventHandler(this.xtraTabControl1_ControlAdded);// Đăng kí sự kiện cho cái Button Header đó.            this.xtraTabControl1.CloseButtonClick += new System.EventHandler(this.xtraTabControl1_CloseButtonClick);            //
    Và đây là Sự kiện khi Click vào Button đó.

    Mã:
    private void xtraTabControl1_CloseButtonClick(object sender, EventArgs e)        {// dong tab            DevExpress.XtraTab.XtraTabControl tabControl = sender as DevExpress.XtraTab.XtraTabControl;            DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs arg = e as DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs;            (arg.Page as DevExpress.XtraTab.XtraTabPage).Dispose();        }
    - Add thêm sự kiện ControlAdded của cái Tabmain để Khi add tab con vào thì nó focus tới Tab con đó

    Mã:
    private void xtraTabControl1_ControlAdded(object sender, ControlEventArgs e)        {// Khi add vào thì Focus tới ngay Tab vừa Add            xtraTabControl1.SelectedTabPageIndex = xtraTabControl1.TabPages.Count - 1;        }
    - Hưởng thành quả thôi (hinh 4)

    *Note: Bài viết này dành cho các bạn còn thắc mắc về Add tab cơ bản như thế nào. 12h rồi kìa.
    Chúc các bạn sức khỏe!!!

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    bạn có thể share project này được không thak

  3. #3
    Để tối về mình up lên cho chứ h đang đi làm mà[IMG]images/smilies/biggrin.png[/IMG]

    Đây là cái Project nè bạn. Dev 10.2.6 nhé bạn

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    bài viết của bạn rất bổ ích. cám ơn bạn rất nhiều!!!

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    bạn viết vậy có thế người khác khó hiểu. Mình chỉ làm cách đơn giản thế này thôi. Kéo XtraTabControl thả vào form main (nếu chưa có trong thanh toolbox thì bạn add vào) trong nút gọi form ở thanh rb thì bạn code đoạn lệnh sau vào
    fr_DS_SV fr1 = new fr_DS_SV();
    fr1.MdiParent = this;
    fr1.Show();
    Vậy là được. Vì đa số các bạn chỉ dùng XtraTabControl để "bắt" form thôi [IMG]images/smilies/biggrin.png[/IMG]

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi wait2011
    bạn viết vậy có thế người khác khó hiểu. Mình chỉ làm cách đơn giản thế này thôi. Kéo XtraTabControl thả vào form main (nếu chưa có trong thanh toolbox thì bạn add vào) trong nút gọi form ở thanh rb thì bạn code đoạn lệnh sau vào
    fr_DS_SV fr1 = new fr_DS_SV();
    fr1.MdiParent = this;
    fr1.Show();
    Vậy là được. Vì đa số các bạn chỉ dùng XtraTabControl để "bắt" form thôi [IMG]images/smilies/biggrin.png[/IMG]
    Bạn dùng cách này để add User Control thử được không?

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn làm sao để add phần chọn giao diện vào ribbonPageGroup2 vậy ? Mình add nó chỉ ở trên góc phải của màn hình, dưới nút close thôi.

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi hdcong
    Bạn làm sao để add phần chọn giao diện vào ribbonPageGroup2 vậy ? Mình add nó chỉ ở trên góc phải của màn hình, dưới nút close thôi.
    Mình dùng Gallary để add phần giao diện vào đó đó bạn

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn chỉ mình cách làm như vậy được không ?

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    có cách nào làm cho nút close tab nằm sát bên phải của tab không.Mình thấy TabControl của DotNetBar làm được thế mà[IMG]images/smilies/dont_know.gif[/IMG]

 

 
Trang 1 của 4 123 ... CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •