none
請問如何利用鍵盤循序切換 TabPage 與按右鍵關閉 TabPage 分頁 RRS feed

  • 問題

  • 剛剛爬文一下,找到利用鍵盤切換分頁 Me.TabControl1.SelectedTab = Me.TabPage2,不過他是以按下一個案件對應一個分頁的方式,不過我想要達成的效果是利用Ctrl+Tab 組合建來循序播放,請問應該如何定義?

    另一個是若我想要在分頁標籤按下右鍵關閉分頁,又該如何做呢?
    謝謝你們的指導。
    2007年10月28日 上午 08:35

解答

  • 程式碼區塊

     

    using System;
    using System.Drawing;
    using System.Windows.Forms;

    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

     

            private ContextMenu cm = new ContextMenu();

            private void Form1_Load(object sender, EventArgs e)
            {
                cm.MenuItems.Add("Close the tabPage", new EventHandler(CloseIt));
            }

     

            private void CloseIt(object sender, EventArgs e)
            {
                if (MessageBox.Show("Do you want to CLOSE the tabPage?", "Close TabPage", MessageBoxButtons.OKCancel) == DialogResult.OK)
                {
                    tabControl1.TabPages.Remove(tabControl1.SelectedTab);
                }
            }

     

            private void tabControl1_MouseDown(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Right)
                {
                    cm.Show(tabControl1, new Point(e.X, e.Y));
                }
            }


        }
    }

     

     

     

    2007年10月28日 下午 01:08

所有回覆

  • 話說 TabControl 這個控制項原本就是利用 Ctrl + Tab 的組合鍵來循序切換 TabPages 的~

     

    2007年10月28日 上午 09:57
  • 程式碼區塊
            private void tabControl1_MouseDown(object sender, MouseEventArgs e)
            {
                if(e.Button == MouseButtons.Right)
                {
                    tabControl1.TabPages.Remove(tabControl1.SelectedTab);
                }
            }

     

     

     

    在 TabPages 上按下右賤會把該 TabPage 移除...

     

    2007年10月28日 上午 10:00
  • 哈哈!! 對耶~ 竟然沒有去試試看 =.=
    不好意思~ 耍笨了

    那我想在請問依下,要怎麼做可以讓分頁標籤大小維持固定,不管我在分頁標籤上文字長或短(長的話就是 ... 方式顯示),雖然 TabControl 的 ItemSIze 設定就是那麼大,不過文字太多還是會把標籤撐長。
    2007年10月28日 下午 12:23
  • 本來想說是按下右鍵,會有提示字元,然後選擇關閉,就像平常我們在滑鼠按下右鍵,會跑出列表,其中一項是關閉分頁。
    如果說這樣不行的話,我想直接再分頁標籤旁邊弄一個小XX的 Label 然後做個 click 的事件,或許這樣效果比較好

     chhuang 寫信:

    程式碼區塊
            private void tabControl1_MouseDown(object sender, MouseEventArgs e)
            {
                if(e.Button == MouseButtons.Right)
                {
                    tabControl1.TabPages.Remove(tabControl1.SelectedTab);
                }
            }

     

     

     

    在 TabPages 上按下右賤會把該 TabPage 移除...

     




    2007年10月28日 下午 12:28
  • 程式碼區塊

     

    using System;
    using System.Drawing;
    using System.Windows.Forms;

    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

     

            private ContextMenu cm = new ContextMenu();

            private void Form1_Load(object sender, EventArgs e)
            {
                cm.MenuItems.Add("Close the tabPage", new EventHandler(CloseIt));
            }

     

            private void CloseIt(object sender, EventArgs e)
            {
                if (MessageBox.Show("Do you want to CLOSE the tabPage?", "Close TabPage", MessageBoxButtons.OKCancel) == DialogResult.OK)
                {
                    tabControl1.TabPages.Remove(tabControl1.SelectedTab);
                }
            }

     

            private void tabControl1_MouseDown(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Right)
                {
                    cm.Show(tabControl1, new Point(e.X, e.Y));
                }
            }


        }
    }

     

     

     

    2007年10月28日 下午 01:08
  • 看起來好像差不多了,在此先謝謝你,不過我有幾個小地方想請教您

    1. 我想要在分頁標籤(那個小Item)上面點的話,應該要怎麼設定,似乎設定成 tabControl 或者 tabControl.SlectedTab 都不行。

    2. 我們平常利用 Ctrl+Tab 切換分頁,或者用滑鼠直接切換,在此情況下 tabControl 中的 SelectedIndex 和 SelectedTab 應該
       會幫我們重新設定成當下的分頁吧?


    謝謝你唷!!
    2007年10月28日 下午 02:18
  • 1. 上面的程式碼,應該也只能在 TabPage 的標籤上按得出功能表吧?

     

    2. 是的

     

    2007年10月28日 下午 02:51
  • 首先,謝謝 chhuange 的不吝指教,它提供的在 TabPage 上面案右鍵關閉分頁的方式。 在此謝謝他 Smile

    那我在這邊大致地在整理一下我的需求:

    1. 由於我的 TabPage 上面有其他的視窗存在,所以沒辦法在 TabPage 上面(client area) 按下右鍵,所以我希望能在分頁''標籤''
       上面按下右鍵,請問有辦法嘛?還是說就想辦法作的像一點?

    2. 我們一開始產生一個 TabControl 它的 Item Size 預設為 ( 0, 17 ),看似大小固定,不過如果分頁標籤上方的文字過長,還是
       會把標籤撐長,所以在此想請教一下,要怎麼做可以讓分頁標籤大小維持固定?不管我在分頁標籤上文字長或短( 太長的部分
       就是以 ... 方式顯示 )。

    ^________________________________^
    2007年10月28日 下午 02:59
  • 1. 不好意思,了解不能...

     

    2. (1) 簡單方法: 設定 TabControl 的 SizeMode 為 Fixed

        (2) 複雜: 設定 TabControl 的 DrawMode 為 OwnerDrawFixed

                     然後自己撰寫 TabControl 的 DrawItem 事件,加入繪製標題的程式碼

     

     

    2007年10月29日 上午 05:30
  • SizeMode 效果不是很好,超過的部分會直接切掉,看樣子需要自己去描繪標籤內容。
    謝謝你!! ^_____________________________^
    2007年10月29日 上午 08:34