Trang 1 trên tổng số 4 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 40 kết quả

Đề tài: Hướng dẫn AddTab con (động) vào XtraTabControl trong DevExpress

Hybrid View

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

    Mặc định 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é
    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5. using System.Windows.Forms;
    6. using System.Windows.Forms.VisualStyles;
    7. using System.Windows.Forms.Layout;
    8. using DevExpress.XtraEditors;
    9. using System.Drawing;
    10. namespace AddTab
    11. {
    12.     public class TabAdd
    13.  
    14.   {        // 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)
    15.             // Sử dụng 4 đối số truyền vào cho hàm này gồm có:
    16.             //1> DevExpress.XtraTab.XtraTabControl XtraTabCha : Tạm gọi là Tab Cha vì XtraTabControl này để mình quăng tabcon vào
    17.             //2> string icon : Khi add Tab con vào Tab cha thì đối số này để quy định icon hình cho tabCon(XtraTabpage)
    18.             //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 đó.
    19.             //4> System.Windows.Forms.UserControl UserControl: Cái này dùng để Add cái UserControl do ta tạo vào Tabcon
    20.            // Đướng đi: Khi gọi hàm này phải truyền vào 4 đối số để biết:
    21.                             //Anh muốn add 1 cái Tab con vào cái tab Cha nào?
    22.                             // Anh muốn đặt tên Tab con đó tên là gì?
    23.                             // anh muốn cái Tab con khi add vào thì Icon của nó là gì?
    24.                             // Anh muốn đặt cái gì vào trong cái Tab Con đó trước khi quăng nó lên TAb Cha?
    25.             // Note : Các bạn có thể tùy biến nhiều đối số khác nữa nhé.
    26.         public void AddTab(DevExpress.XtraTab.XtraTabControl XtraTabCha,string icon,string TabNameAdd,System.Windows.Forms.UserControl UserControl )
    27.         {
    28.             // Khởi tạo 1 Tab Con (XtraTabPage)
    29.         DevExpress.XtraTab.XtraTabPage TAbAdd =new DevExpress.XtraTab.XtraTabPage();
    30.             // Đặt đại cái tên cho nó là TestTab (Đây là tên nhé)
    31.         TAbAdd.Name = "TestTab";
    32.             // Tên của nó là đối số như đã nói ở trên
    33.         TAbAdd.Text = TabNameAdd;
    34.         // Add đối số UserControl vào Tab con vừa khởi tạo ở trên
    35.         TAbAdd.Controls.Add(UserControl);
    36.             // Dock cho nó tràn hết TAb con đó
    37.         UserControl.Dock = DockStyle.Fill;
    38.         try
    39.         {
    40.             // 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é)
    41.             TAbAdd.Image = System.Drawing.Bitmap.FromFile(System.Windows.Forms.Application.StartupPath.ToString() + @"\Icons\" + icon);
    42.  
    43.         }
    44.         catch (Exception e)
    45.         {
    46.         }
    47.         // Quăng nó lên TAb Cha (XtraTabCha là đối số thứ nhất như đã nói ở trên)
    48.         XtraTabCha.TabPages.Add(TAbAdd);
    49.         }
    50.     }
    51. }

    - 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
    Visual C# Code:
    1. 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:
    Visual C# Code:
    1. private void barButtonItem1_ItemClick(object sender, ItemClickEventArgs e)
    2.         {
    3.             // 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
    4.             // mà nó sẽ chuyển focus tới TAb Sinh Viên này
    5.             int t=0;
    6.             foreach (DevExpress.XtraTab.XtraTabPage tab in xtraTabControl1.TabPages )
    7.             {
    8.             if (tab.Text=="Sinh Viên")
    9.             {
    10.                 xtraTabControl1.SelectedTabPage   = tab;
    11.             t=1;
    12.             }
    13.             }
    14.             if (t==1)
    15.             {
    16.            
    17.             }
    18.             else
    19.             {// 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
    20.                 clsAddTab.AddTab(xtraTabControl1,"","Sinh Viên",new SinhVien() );
    21.             }
    22.            
    23.         }
    - 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 đó.
    Visual C# Code:
    1. // xtraTabControl1
    2.             //
    3.             this.xtraTabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
    4. // Viết thêm cái dòng này để tạo ra cái button header đó
    5.             this.xtraTabControl1.HeaderButtons = DevExpress.XtraTab.TabButtons.Close;
    6. // them dong nay de cai nut do xuat hien o tat ca cac tab
    7.             xtraTabControl1.ClosePageButtonShowMode = DevExpress.XtraTab.ClosePageButtonShowMode.InAllTabPagesAndTabControlHeader;
    8.             this.xtraTabControl1.Location = new System.Drawing.Point(0, 145);
    9.             this.xtraTabControl1.Name = "xtraTabControl1";
    10.             this.xtraTabControl1.Size = new System.Drawing.Size(790, 423);
    11.             this.xtraTabControl1.TabIndex = 2;
    12.             this.xtraTabControl1.ControlAdded += new System.Windows.Forms.ControlEventHandler(this.xtraTabControl1_ControlAdded);
    13. // Đăng kí sự kiện cho cái Button Header đó.
    14.             this.xtraTabControl1.CloseButtonClick += new System.EventHandler(this.xtraTabControl1_CloseButtonClick);
    15.             //
    Và đây là Sự kiện khi Click vào Button đó.
    Visual C# Code:
    1. private void xtraTabControl1_CloseButtonClick(object sender, EventArgs e)
    2.         {// dong tab
    3.             DevExpress.XtraTab.XtraTabControl tabControl = sender as DevExpress.XtraTab.XtraTabControl;
    4.             DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs arg = e as DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs;
    5.             (arg.Page as DevExpress.XtraTab.XtraTabPage).Dispose();
    6.         }
    - 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 đó
    Visual C# Code:
    1. private void xtraTabControl1_ControlAdded(object sender, ControlEventArgs e)
    2.         {// Khi add vào thì Focus tới ngay Tab vừa Add
    3.             xtraTabControl1.SelectedTabPageIndex = xtraTabControl1.TabPages.Count - 1;
    4.         }
    - 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!!!
    Attached Thumbnails Attached Thumbnails Addtab.JPG   Project2.JPG   HeaderButton.JPG   ThanhQua.JPG  
    Đã được chỉnh sửa lần cuối bởi elkidvnn1 : 21-11-2012 lúc 01:46 PM. Lý do: Tắt TAb một cách động
    bongda24h.tv

  2. #2
    Ngày gia nhập
    02 2010
    Bài viết
    31

    bạn có thể share project này được không thak

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

    Để tối về mình up lên cho chứ h đang đi làm mà

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

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

    mình down về giải nén rồi mà ko thấy cái form của bạn đâu cả ..có mỗi 3 file code thôi

  5. #5
    Ngày gia nhập
    04 2015
    Bài viết
    3

    mình add đc tab như bạn rồi. nhưng mình có 1 thắc mắc mà chưa giải quyết được.
    nếu button ở form gọi tag thì được nhưng mình muốn đó là trong cái usercontrol mình đã gọi trong tab. có 1 button. khi mình click vào đó nó sẽ gọi tag khác thì làm thế nào ạ. cũng thử dataget rồi nhưng ko đc

  6. #6
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    890

    Mặc định Hướng dẫn AddTab con (động) vào XtraTabControl trong DevExpress

    Trích dẫn Nguyên bản được gửi bởi thanhluan119 Xem bài viết
    mình add đc tab như bạn rồi. nhưng mình có 1 thắc mắc mà chưa giải quyết được.
    nếu button ở form gọi tag thì được nhưng mình muốn đó là trong cái usercontrol mình đã gọi trong tab. có 1 button. khi mình click vào đó nó sẽ gọi tag khác thì làm thế nào ạ. cũng thử dataget rồi nhưng ko đc
    Bạn đã muốn quá nhiều rồi. Một điều khiển hay form có một số chức năng sẵn có, và đã được thiết kế phù hợp theo mục tiêu định sẵn. Thay đổi nó thì cũng được nhưng chẳng bằng ta thiết kế nó từ đầu. Usercontrol nên hiều theo nghĩa là để chúng ta thay đổi (chặn, bắt, hủy, chuyển) theo nhu cầu. Và nhu cầu của bạn như thế nào, có thể cụ thể hơn không.

  7. #7
    Ngày gia nhập
    04 2015
    Bài viết
    3

    Trích dẫn Nguyên bản được gửi bởi MHoang Xem bài viết
    Bạn đã muốn quá nhiều rồi. Một điều khiển hay form có một số chức năng sẵn có, và đã được thiết kế phù hợp theo mục tiêu định sẵn. Thay đổi nó thì cũng được nhưng chẳng bằng ta thiết kế nó từ đầu. Usercontrol nên hiều theo nghĩa là để chúng ta thay đổi (chặn, bắt, hủy, chuyển) theo nhu cầu. Và nhu cầu của bạn như thế nào, có thể cụ thể hơn không.
    ý mình là cái usercontrol được gọi trong tab như bài topic kia. bây giờ nếu mình muốn gọi tab nhưng button để gọi tab nó lại nằm trong usercontrol chứ ko phải nằm trong form chính. thì làm thế nào. có làm đc ko pro

    - - - Nội dung đã được cập nhật ngày 11-02-2019 lúc 05:52 PM - - -

    Trích dẫn Nguyên bản được gửi bởi MHoang Xem bài viết
    Bạn đã muốn quá nhiều rồi. Một điều khiển hay form có một số chức năng sẵn có, và đã được thiết kế phù hợp theo mục tiêu định sẵn. Thay đổi nó thì cũng được nhưng chẳng bằng ta thiết kế nó từ đầu. Usercontrol nên hiều theo nghĩa là để chúng ta thay đổi (chặn, bắt, hủy, chuyển) theo nhu cầu. Và nhu cầu của bạn như thế nào, có thể cụ thể hơn không.
    giả sử mình có 2 tab là bán hàng(usercontrol bán hàng) và thêm hàng(usercontrol thêm hàng). mình gọi 2 tab như trong topic. và trong tab bán hàng có button thêm hàng. bấm vào button đó nó sẽ mở hoặc chuyển qua tab thêm hàng. có thể làm đc ko pro

  8. #8
    Ngày gia nhập
    04 2010
    Bài viết
    45

    bài viết của bạn rất bổ ích. cám ơn bạn rất nhiều!!!

  9. #9
    Ngày gia nhập
    03 2011
    Bài viết
    20

    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
    Http://P2share.com. Knowledge Is Not Only My Own
    Y!h: coolboy_cantlove

  10. #10
    Ngày gia nhập
    04 2010
    Bài viết
    5

    Trích dẫn Nguyên bản được gửi bởi wait2011 Xem bài viết
    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
    Bạn dùng cách này để add User Control thử được không?

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

  1. Sử dụng XtraTabControl,XtraUserControl, Thay thế MDI Form với DevExpress
    Gửi bởi elkidvnn1 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 04-05-2014, 06:11 PM
  2. ADO.NET Cách nào tạo nút close trong Xtratabcontrol DevExpress?
    Gửi bởi NguyenDuyPC trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 04-05-2013, 09:53 AM
  3. Cách add usercontrol vào giữa xtratabcontrol trong devexpress c#?
    Gửi bởi hungvboys trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 06-02-2013, 10:34 PM
  4. DEVEXPRESS EBOOK professiona devexpress asp dot net controls
    Gửi bởi ammayngu91 trong diễn đàn Software (Phần mềm) | Ebooks
    Trả lời: 1
    Bài viết cuối: 09-09-2011, 10:38 PM
  5. lỗi: You have installed DevExpress Products in Evaluation trong devexpress asp.net?
    Gửi bởi boystock trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 3
    Bài viết cuối: 05-04-2011, 07:15 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