none
切換頁面的元件 RRS feed

  • 問題

  • 在MW6設定視窗有三個頁面(personal, system, connect)可互相切換,我想在我自己應用程式中做同樣的切換,想請問一下該如何製作。我試過了tabctrl, propertysheet,看起來都不是。(開發環境是VC2005)

    2008年1月28日 上午 01:38

解答

  • Hi,

    我看不到你圖片的連結,下面貼的圖是我測試的,拉出一個TabControl,預設會有兩個Tabpage,之後在Tabpage上面放上ListView,ListView的View屬性設定為LargeIcon(這也是預設的設定值);再拉出ImageList,之後載入圖片到ImageList裡面,再來將ListView的LargeImageList以及SmallImageList設定為ImageList1;之後在程式碼加入ListViewItem並且設定Text以及ImageIndex屬性之後出來的效果是這樣

     

    Code Snippet

    PS:貼圖可以用下面方式(括弧裡面空白要拿掉)

       [i m g]圖片連結[/i m g]

     

     

    -----------------------------------------------------------------------------

    PS:我用的是Visual Basic
    2008年1月29日 上午 07:30
    版主

所有回覆

  • HI,

     

    多頁籤的操作畫面就是TabStrip和PropertySheet, 如果都不是, 有參考畫面嗎?

     

    tihs

    2008年1月28日 上午 06:08
  • 您好:

    我很想放圖上來,這樣比較好瞭解,不過我不知道要怎麼在這個論壇貼圖。

     

    我再描述一次我的問題好了,我想要的多頁籤是像 "開始"-->"設定" 的那個設定畫面,標籤在最下面的那種,而我自己用tabctrl, propertysheet的確可以做到同樣切換的功能,不過畫面和"設定"的多頁籤畫面不一樣。想瞭解windows mobile裡面用的是特殊元件,還是只是改變tabctrl, propertysheet的屬性即可。

    謝謝

    2008年1月28日 上午 06:29
  • 我想要的多頁籤就是像下面這樣:

    http://www.cnblogs.com/images/cnblogs_com/upto/fake-gps/2007-02-15_222831.png

    可是用 tabctrl, propertypage做出來的跟這個長的不一樣

    不知道這是用什麼方式作出來的

     

    2008年1月28日 上午 08:53
  • 一樣用 tabControl 再加上 Listview 就可以了,Listview 跟 tabControl 的用法請參照 MSDN。

    不過建議你用動態新增 tabPage 跟 Listview,方法如下:

    http://tw.myblog.yahoo.com/jw!jyGBESeREQWOtWaWDemX1kQT.NI-

    開發環境:WinXP Pro, VisualStudio2005 SmartDevice C#

     

    2008/01/29 10:26

    Code Snippet

    private ListView[] listView;            //先宣告要動態新增的元件陣列
    private ImageList[] imageList;
    private TabPage[] tabPage;

    int intPageNum = 10;                       //要增加的頁數
    int intListItem = 5;                            //要陳列的項目數量

    #region --- 新增動態 imageList ---

    imageList = new ImageList[intPageNum];
    int countImageList = 0;

    while (countImageList< intPageNum)
    {
        imageList[countImageList] = new ImageList();
        imageList[countImageList].ImageSize = new Size(32, 32);
        countImageList++;
     }

    #endregion

    #region --- 新增動態 ListView ---

    listView = new ListView[intPageNum];
    int countListView = 0;

    while (countListView < intPageNum)
    {
        listView[countListView] = new ListView();
        listView[countListView].Size = this.ClientSize;
        listView[countListView].Dock = DockStyle.Fill;
        listView[countListView].Activation = ItemActivation.OneClick;
        listView[countListView].LargeImageList = imageList[countListView];
        listView[countListView].Visible = false;
        listView[countListView].ItemActivate += new System.EventHandler(this.listView_ItemActivate);

        countListView ++;
    }

    #endregion

    #region --- 新增動態 tabPage ---

    tabPage = new TabPage[intPageNum];
    int countTabPage = 0;

    while (countTabPage < intPageNum)
    {
        tabPage[countTabPage ] = new TabPage();
        tabControl1.TabPages.Add(tabPage[countTabPage ]);
        tabPage[countTabPage ].Controls.Add(listView[countTabPage ]);
        tabPage[countTabPage ].Text = "第一頁";                     // 利用 ArrayList 方式即可

        countTabPage ++;
    }

    #endregion

     

     

    2008年1月29日 上午 02:29
  • 感謝,不過不好意思這不是我想要的,我不確定是不是C#和MFC裡的tabctrl有點不同。

    首先,我想要找的是分頁而不是listview。簡單來說,我要的是像原本系統用的分頁,看起來比較簡陋、每個頁籤都有背景色,而MFC tabctrl在標籤上有陰影、有圓弧較精緻,不過背景都是白的。不知道是mobile上有用其他元件如COM之類的,還是修改原本tabctrl的屬性即可(試過一些,目前找不到)。

    謝謝

    2008年1月29日 上午 06:16
  • Hi,

    我看不到你圖片的連結,下面貼的圖是我測試的,拉出一個TabControl,預設會有兩個Tabpage,之後在Tabpage上面放上ListView,ListView的View屬性設定為LargeIcon(這也是預設的設定值);再拉出ImageList,之後載入圖片到ImageList裡面,再來將ListView的LargeImageList以及SmallImageList設定為ImageList1;之後在程式碼加入ListViewItem並且設定Text以及ImageIndex屬性之後出來的效果是這樣

     

    Code Snippet

    PS:貼圖可以用下面方式(括弧裡面空白要拿掉)

       [i m g]圖片連結[/i m g]

     

     

    -----------------------------------------------------------------------------

    PS:我用的是Visual Basic
    2008年1月29日 上午 07:30
    版主
  •  

    謝謝你的試驗,我可以確定是用tabctrl了。不過,我這邊顯現出來的跟你的有點不一樣,我下面的tab都是白的、沒有背景色,且tab的外觀跟PC上的比較類似,是有陰影跟圓角的,我再試看看屬性的設定,謝謝。

    題外話,我要怎麼讓tabctrl去fit手機上視窗的大小?

    2008年1月30日 上午 03:44
  • Hi,

    對於MFC與C++的知識我是零蛋一個,在Visual Basic中我是設定Dock屬性,將其設定成Fill,那麼TabControl就會佔滿整個畫面了,參考看看。

    2008年1月30日 上午 05:31
    版主
  • HI,

     

    如果您是要將頁籤顯示在下方, 使用MFC的做法可以參考以下的範例:

     

    http://www.codeguru.com/cpp/controls/controls/tabcontrols/article.php/c7407/

     

    tihs

    2008年1月30日 上午 06:09