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

Đề tài: Cách thao tác với tabcontrol trong thiết kế windows forms C#?

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

    Mặc định Cách thao tác với tabcontrol trong thiết kế windows forms C#?

    mình có 1 form, trong form có 1 button. Giờ muốn khi click vào button đó thì 1 tab mới hiện ra đồng thời add form2 vào đó thì phải làm như thế nào.
    p/s: mình vừa đọc về tabcontrol nên chưa biết bắt đầu như thế nào cả, nhờ mọi người giúp chi tiết tí :(
    cảm ơn mọi người

  2. #2
    Ngày gia nhập
    04 2012
    Bài viết
    116

    Trích dẫn Nguyên bản được gửi bởi v_huster38 Xem bài viết
    mình có 1 form, trong form có 1 button. Giờ muốn khi click vào button đó thì 1 tab mới hiện ra đồng thời add form2 vào đó thì phải làm như thế nào.
    p/s: mình vừa đọc về tabcontrol nên chưa biết bắt đầu như thế nào cả, nhờ mọi người giúp chi tiết tí :(
    cảm ơn mọi người
    cop y bài mình viết bên vn-zoom luôn nghe
    Trích dẫn Nguyên bản được gửi bởi dai_gia_bk Xem bài viết
    Mình cũng có thắc mắc y như bạn nambatre.bạn làm được rùi thì chỉ mình với.thank bạn nhiều:x:x:x:x
    cái này mình làm được rồi(nó chung code thì copy gắp nơi mỗi nơi mỗi ít bỏ vào chứ mình không viết

    đầu tiên bạn tảo phương thức khỏi tạo tabcontrol
    (mỗi lần bạn nhấn gọi tab nó sẽ gọi phương thức này
    tabContronl là tên cái tab bạn kéo vào đó, string text là chuỗi của tabpages (tên) , form là cái form bạn cho vào trong tab ấy
    Code:
       public void TabCreating(TabControl TabControl, string Text, Form Form)
            {
                int Index = KiemTraTonTai(TabControl, Text);
                if (Index >= 0)
                {
                    TabControl.SelectedTab = TabControl.TabPages[Index];
                    TabControl.SelectedTab.Text = Text;
    
                }
                else
                {
                     TabPage TabPage = new  TabPage { Text = Text };
                    TabControl.TabPages.Add(TabPage);
                    TabControl.SelectedTab  = TabPage;
    
                    Form.TopLevel = false;
                    Form.Parent = TabPage;
                    //  Form.MdiParent = this;
                    Form.Show();
                    Form.Dock = DockStyle.Fill;
                }
            }
    phương thức này dùng để kiểm tra tab đã tồn tại chưa (tab đã mở chưa) bằng cáh kiểm tra cái tên của tabpagse ấy
    Code:
            static int KiemTraTonTai(TabControl TabControlName, string TabName)
            {
                int temp = -1;
                for (int i = 0; i <TabControlName.TabPages.Count; i++)
                {
                    if (TabControlName.TabPages[i].Text == TabName)
                    {
                        temp = i;
                        break;
                    }
                }
                return temp;
            }
    thế là xong nhé,
    ví dụ bạn có một nuot button bạn ấn nút đó để gọi tab + form lên
    thì bạn làm như sau,
    bạn khởi tạo một đối tượng (đối tưởng này là cái form bạn add vào ấy)
    ví dụ
    Code:
    Form1=frmf1=new Form1();  // đặt thuộc tính FormborderStyle =none nghe
    gọi tabpages
    TabCreating(tên cái tabcontrol bạn kéo ở toolbox nhé,"Hiện Thị Form1", frmf1);
    thế là xong cách tạo tabcontrol

    bây giờ bạn có một vấn đề cần giải quyết,, đó là làm sao để đóng tabpages (vì trong tabcontrol của visual c# không có nút close , bắt buộc bạn phải vẽ nút đó bằng cách dùng hàm vẽ chuôi,
    sau đó bạn bât sự kiện nhấn chuột tại vùng tọa đô bạn vẽ cái nút colose đó để thực hiện tắt nó đi, )
    và đây là phương thức vẽ nút X(close) ấy mình có chỉnh sủa một chút đó là mình cho nó vẽ từ tabpage thứ 2 trở lên
    nên mình đặt điều kiện if(e.Index>0) vì index của tabpage được đanh từ o trở đi,(vì tabpage mình làm bàn hệ thống, luon hiện thị không cho phép xóa, bạn không cần thì bạn xóa nó đi
    Code:
     private void tabControlQuanLy_DrawItem(object sender, DrawItemEventArgs e)
            {
                Font closefont = new Font(e.Font.FontFamily, e.Font.Size, FontStyle.Bold);
                Font titlefont = new Font(e.Font.FontFamily, e.Font.Size, FontStyle.Italic);
                if (e.Index > 0)
                {
                e.Graphics.DrawString("X" , closefont, Brushes.Blue, e.Bounds.Right - 15, e.Bounds.Top + 5);
                }
                    e.Graphics.DrawString(this.tabControlQuanLy.TabPages[e.Index].Text, titlefont, Brushes.Black, e.Bounds.Left, e.Bounds.Top + 5);
                
                }
    trong sự kiện MouseDown bạn cho mấy cái này vào , nếu bạn cho tắt từ tabpage thứ 1 thì bạn cho i chạy từ 0 nhé ở đây mình cho chạy từ 1
    Code:
            private void tabControlQuanLy_MouseDown(object sender, MouseEventArgs e)
            {
    
             
                for (int i = 1; i < this.tabControlQuanLy.TabPages.Count; i++)
                {
                    Rectangle rPage = tabControlQuanLy.GetTabRect(i);
                    Rectangle closeButton = new Rectangle(rPage.Right - 15, rPage.Top + 5, 10, 10);
                    if (closeButton.Contains(e.Location))
                    {
                    
                            if (MessageBox.Show("Bạn Có Muốn Tắt Tab Này?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                            {
    
                                this.tabControlQuanLy.TabPages.RemoveAt(i);
                                break;
    
    
                            }
                        
                    }
                } 
            }
    HẾT, chưa đọc câu hỏi của bạn đầu tiên, nhưng thấy tiêu đề vậy đoán bạn thắc mắc vấn đề này,
    không phải thì tối lên minh sẽ xóa, ok

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

    CÁI NÀY LÀ MÌNH SỬ DỤNG TABCONTROL CỦA VS CÒN NẾU BẠN SỬ DỤNG TOOL VÍ NHƯU DOTNETBAR HAY DEVXPRESS THÌ CÓ CÁCH ĐÓNG TAB DỄ HƠN,

    BẮT SỰ KIỆN NÀY MÀ ĐÓNG TAB NÈ
    CloseButtonClick

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

    Bạn grok à. Mình thử làm như bạn nhưng không hiện được nút Close. Đây là Demo của mình. Bạn xem mình với... Thank bạn nhiều
    http://www.mediafire.com/?peh3urgmgidc7q8
    Đã được chỉnh sửa lần cuối bởi quangtv25 : 20-03-2013 lúc 03:34 AM.

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

    Trích dẫn Nguyên bản được gửi bởi grok Xem bài viết
    cop y bài mình viết bên vn-zoom luôn nghe


    cái này mình làm được rồi(nó chung code thì copy gắp nơi mỗi nơi mỗi ít bỏ vào chứ mình không viết

    đầu tiên bạn tảo phương thức khỏi tạo tabcontrol
    (mỗi lần bạn nhấn gọi tab nó sẽ gọi phương thức này
    tabContronl là tên cái tab bạn kéo vào đó, string text là chuỗi của tabpages (tên) , form là cái form bạn cho vào trong tab ấy
    Code:
       public void TabCreating(TabControl TabControl, string Text, Form Form)
            {
                int Index = KiemTraTonTai(TabControl, Text);
                if (Index >= 0)
                {
                    TabControl.SelectedTab = TabControl.TabPages[Index];
                    TabControl.SelectedTab.Text = Text;
    
                }
                else
                {
                     TabPage TabPage = new  TabPage { Text = Text };
                    TabControl.TabPages.Add(TabPage);
                    TabControl.SelectedTab  = TabPage;
    
                    Form.TopLevel = false;
                    Form.Parent = TabPage;
                    //  Form.MdiParent = this;
                    Form.Show();
                    Form.Dock = DockStyle.Fill;
                }
            }
    phương thức này dùng để kiểm tra tab đã tồn tại chưa (tab đã mở chưa) bằng cáh kiểm tra cái tên của tabpagse ấy
    Code:
            static int KiemTraTonTai(TabControl TabControlName, string TabName)
            {
                int temp = -1;
                for (int i = 0; i <TabControlName.TabPages.Count; i++)
                {
                    if (TabControlName.TabPages[i].Text == TabName)
                    {
                        temp = i;
                        break;
                    }
                }
                return temp;
            }
    thế là xong nhé,
    ví dụ bạn có một nuot button bạn ấn nút đó để gọi tab + form lên
    thì bạn làm như sau,
    bạn khởi tạo một đối tượng (đối tưởng này là cái form bạn add vào ấy)
    ví dụ
    Code:
    Form1=frmf1=new Form1();  // đặt thuộc tính FormborderStyle =none nghe
    gọi tabpages
    TabCreating(tên cái tabcontrol bạn kéo ở toolbox nhé,"Hiện Thị Form1", frmf1);
    thế là xong cách tạo tabcontrol

    bây giờ bạn có một vấn đề cần giải quyết,, đó là làm sao để đóng tabpages (vì trong tabcontrol của visual c# không có nút close , bắt buộc bạn phải vẽ nút đó bằng cách dùng hàm vẽ chuôi,
    sau đó bạn bât sự kiện nhấn chuột tại vùng tọa đô bạn vẽ cái nút colose đó để thực hiện tắt nó đi, )
    và đây là phương thức vẽ nút X(close) ấy mình có chỉnh sủa một chút đó là mình cho nó vẽ từ tabpage thứ 2 trở lên
    nên mình đặt điều kiện if(e.Index>0) vì index của tabpage được đanh từ o trở đi,(vì tabpage mình làm bàn hệ thống, luon hiện thị không cho phép xóa, bạn không cần thì bạn xóa nó đi
    Code:
     private void tabControlQuanLy_DrawItem(object sender, DrawItemEventArgs e)
            {
                Font closefont = new Font(e.Font.FontFamily, e.Font.Size, FontStyle.Bold);
                Font titlefont = new Font(e.Font.FontFamily, e.Font.Size, FontStyle.Italic);
                if (e.Index > 0)
                {
                e.Graphics.DrawString("X" , closefont, Brushes.Blue, e.Bounds.Right - 15, e.Bounds.Top + 5);
                }
                    e.Graphics.DrawString(this.tabControlQuanLy.TabPages[e.Index].Text, titlefont, Brushes.Black, e.Bounds.Left, e.Bounds.Top + 5);
                
                }
    trong sự kiện MouseDown bạn cho mấy cái này vào , nếu bạn cho tắt từ tabpage thứ 1 thì bạn cho i chạy từ 0 nhé ở đây mình cho chạy từ 1
    Code:
            private void tabControlQuanLy_MouseDown(object sender, MouseEventArgs e)
            {
    
             
                for (int i = 1; i < this.tabControlQuanLy.TabPages.Count; i++)
                {
                    Rectangle rPage = tabControlQuanLy.GetTabRect(i);
                    Rectangle closeButton = new Rectangle(rPage.Right - 15, rPage.Top + 5, 10, 10);
                    if (closeButton.Contains(e.Location))
                    {
                    
                            if (MessageBox.Show("Bạn Có Muốn Tắt Tab Này?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                            {
    
                                this.tabControlQuanLy.TabPages.RemoveAt(i);
                                break;
    
    
                            }
                        
                    }
                } 
            }
    HẾT, chưa đọc câu hỏi của bạn đầu tiên, nhưng thấy tiêu đề vậy đoán bạn thắc mắc vấn đề này,
    không phải thì tối lên minh sẽ xóa, ok
    Cái hàm tạo nút "X" tắt tag cotrol không có tác dụng bạn ơi !

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

  1. Lập trình windows Forms trong C#.Giúp mình với!
    Gửi bởi snake_programmer trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 8
    Bài viết cuối: 12-09-2013, 04:19 PM
  2. Hỏi:Thay đổi ngôn ngữ trong Windows Forms
    Gửi bởi Hattori Heizi trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 28-07-2013, 04:18 PM
  3. Xử lí dữ liệu trong Windows Forms C++
    Gửi bởi dacklayer trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 0
    Bài viết cuối: 28-04-2013, 06:15 PM
  4. Chạy C# Windows Forms Application viết bằng Notepad như thế nào?
    Gửi bởi anhbjetanhdasaj trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 03-04-2009, 11:21 PM
  5. Sử dụng ColorDialog trong ứng dụng Windows Forms C#
    Gửi bởi neverland87 trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 02-05-2007, 07:16 AM

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