2016-11-02 5 views
2

Я думаю, что это должно быть просто сделать. Но я этого не видел. Я хотел бы сделать что-то вроде:Как добавить два ToolStripComboBox и разделитель по горизонтали к одному инструменту ToolStripDropMenuItem?

DropDown -> DropDownItem1 [ComboBox1 [|] ComboBox2], DropDownItem2 [...], DropDownItem3 [...];

Я использую ToolStripDropDownButton в ToolStrip. Я программирую w/C#. Спасибо за ваши советы.

Что-то вроде: https://s18.postimg.org/nd9r35jpl/c89a195a3b6e8dac6e7753af6b0b8a6c.png

С наилучшими пожеланиями

+0

вы делаете ли это с помощью кода или дизайнером? https://i.gyazo.com/c89a195a3b6e8dac6e7753af6b0b8a6c.png – Jim

+0

Привет, Джим, я сделал по дизайнеру, и у меня есть выпадающее меню, подобное этому. Но мне нравится размещать второй combobox2 рядом с combobox1. Я не знаю, получишь ли ты это. –

+0

Вы хотите, чтобы у вас было 2 комбинированных блока в том же раскрывающемся списке? –

ответ

2

Кажется, что вы ищете такой макет:

enter image description here

Чтобы сделать o, вам не нужно создавать какие-либо настраиваемые элементы управления. Просто используйте общие функции ToolStrip. Вам необходимо установить свойство LayoutStyle на подходящее значение.

Пример

private void Form1_Load(object sender, EventArgs e) 
{ 
    var dropdown = new ToolStripDropDown(); 

    //Define style 
    dropdown.LayoutStyle = ToolStripLayoutStyle.Table; 
    var settings = (dropdown.LayoutSettings as TableLayoutSettings); 
    settings.ColumnCount = 3; 

    //First Item  
    var item1 = new ToolStripMenuItem("Some Sub Menu"); 
    dropdown.Items.Add(item1); 
    settings.SetColumnSpan(item1, 3); //Set column span to fill the row 

    //First Combo 
    var combo1 = new ToolStripComboBox("combo1"); 
    combo1.Items.AddRange(new string[] { "Item1", "Item2", "Item3" }); 
    dropdown.Items.Add(combo1); 

    //Separator 
    dropdown.Items.Add("-"); 

    //Second Combo 
    var combo2 = new ToolStripComboBox("combo2"); 
    combo2.Items.AddRange(new string[] { "Item1", "Item2", "Item3" }); 
    dropdown.Items.Add(combo2); 

    //Last item 
    var item2 = new ToolStripMenuItem("Some Othe Sub Menu"); 
    dropdown.Items.Add(item2); 
    settings.SetColumnSpan(item2, 3); //Set column span to fill the row 

    toolStripDropDownButton1.DropDown = dropdown; 
} 
+0

Это работает аналогично с ToolstripDropDownButton вместо ToolstripDropDown? –

+0

У меня есть «ToolStripDropDownButton», как вы можете видеть. Затем я создал «ToolStripDropDown» с настраиваемым макетом и установил его как «DropDown» этого «ToolStripDropdownButton». –

+0

О, извините, я не видел ваш код до конца. Спасибо, Реза. –

1

С помощью мастера и посмотреть на конечный код:

// 
// toolStrip1 
// 
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { 
this.toolStripComboBox1, 
this.toolStripComboBox2, 
this.toolStripSeparator1, 
this.toolStripDropDownButton1}); 
this.toolStrip1.Location = new System.Drawing.Point(0, 0); 
this.toolStrip1.Name = "toolStrip1"; 
this.toolStrip1.Size = new System.Drawing.Size(771, 25); 
this.toolStrip1.TabIndex = 2; 
this.toolStrip1.Text = "toolStrip1"; 
// 
// toolStripComboBox1 
// 
this.toolStripComboBox1.Name = "toolStripComboBox1"; 
this.toolStripComboBox1.Size = new System.Drawing.Size(121, 25); 
// 
// toolStripComboBox2 
// 
this.toolStripComboBox2.Name = "toolStripComboBox2"; 
this.toolStripComboBox2.Size = new System.Drawing.Size(121, 25); 
// 
// toolStripSeparator1 
// 
this.toolStripSeparator1.Name = "toolStripSeparator1"; 
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25); 
// 
// toolStripDropDownButton1 
// 
this.toolStripDropDownButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; 
this.toolStripDropDownButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripDropDownButton1.Image"))); 
this.toolStripDropDownButton1.ImageTransparentColor = System.Drawing.Color.Magenta; 
this.toolStripDropDownButton1.Name = "toolStripDropDownButton1"; 
this.toolStripDropDownButton1.Size = new System.Drawing.Size(29, 22); 
this.toolStripDropDownButton1.Text = "toolStripDropDownButton1"; 
+0

Привет, mcNets, у меня есть мой код. Но мне нравится размещать второй combobox2 рядом с combobox1, я не хочу combobox1 выше combobox2 (горизонтальное выравнивание по элементам не вертикально). Я не знаю, получишь ли ты это. –

+0

изменить порядок элементов в методе 'this.toolStrip1.Items.AddRange()'. – McNets

+0

Mcnets что-то вроде: https://s18.postimg.org/nd9r35jpl/c89a195a3b6e8dac6e7753af6b0b8a6c.png –