15

I want to put an icon in the tab header so that this

winforms tabs
looks like this.

fancy tabs

Alex Essilfie
  • 12,339
  • 9
  • 70
  • 108
Xel
  • 540
  • 2
  • 8
  • 27

2 Answers2

26

You can do it in the VS Designer this way:

  1. Add an ImageList to your form.
  2. Set the ImageList property of the TabControl to the ImageList which contains the icons.
  3. Set the ImageIndex or ImageKey property of each TabPage in the TabControl to the desired image you want to display.

If you'd like to do it all in code, here's how to go about it.

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

public class Form1
{

    public void Form1()
    {
        InitializeComponent();

        // initialize the imagelist
        ImageList imageList1 = new ImageList();
        imageList1.Images.Add("key1", Image.FromFile(@"C:\path\to\file.jpg"));
        imageList1.Images.Add("key2", Image.FromFile(@"C:\path\to\file.ico"));

        //initialize the tab control
        TabControl tabControl1 = new TabControl();
        tabControl1.Dock = DockStyle.Fill;
        tabControl1.ImageList = imageList1;
        tabControl1.TabPages.Add("tabKey1", "TabText1", "key1"); // icon using ImageKey
        tabControl1.TabPages.Add("tabKey2", "TabText2", 1);      // icon using ImageIndex
        this.Controls.Add(tabControl1);
    }
}
Alex Essilfie
  • 12,339
  • 9
  • 70
  • 108
7

If you are using WPF:

<TabItem>
    <TabItem.Header>
        <StackPanel Orientation="Horizontal">
            <Image VerticalAlignment="Center" Source="Icon Imagepath"/>
            <TextBlock>Tab header text</TextBlock>
        </StackPanel>
    </TabItem.Header>
</TabItem>

If you are using WinForms:

  1. Open your form in designer mode
  2. Drop an ImageList on the form and fill it with your icons.
  3. Set the TabControl.ImageList property.
  4. For each tab page, set the ImageIndex property.
Maheep
  • 5,539
  • 3
  • 28
  • 47