2015-09-27 2 views
0

У меня проблема с litle в моем программном обеспечении. Я использую библиотеку лент и имею панель инструментов ленты и tabcontrol. При нажатии кнопки я создаю новую вкладку.C# проверить, открыт ли вкладка

Как проверить, открыт ли tabitem? Если открыто, просто выберите эту вкладку.

Когда я нажимаю кнопку 5x на кнопке, я открываю 5 tabitems.

private void buttonItem14_Click_1(object sender, EventArgs e) 
{ 
    TabItem orderTab = tabControl1.CreateTab("Orders");  

    // Check if tab is opened  
    // etc... ... 
} 

Любое решение SLOVE это?

+0

Можете ли вы создать его один раз в другом месте и скрыть/показать его? – Ian

+0

Я могу выполнить всю эту операцию, но я не хочу открывать несколько вкладок. – Ivan

+0

. Какую ленточную библиотеку вы используете? Каков тип 'tabControl1'? –

ответ

1

Просто перебирайте все открытые вкладки и сравнивайте то, что всегда отличается для каждой вкладки, например, заголовка. Вот код, который я обычно использую, он не оптимален, но он выполняет свою работу.

  if (tabControl.HasItems) 
     { 
      foreach (TabItem t in tabControl.Items) 
      { 
       if ((string)t.Header == "Hello") 
       { 
        t.IsSelected = true; 
        return; 
       } 

      } 
     } 

      tabControl.Items.Add(new TabItem() 
      { 
       Header = "Hello", 
       Content = new UserControl(), 
       IsSelected = true 
      }); 

Сначала мы проверяем, есть ли какие-либо вкладки в элементе управления вкладками, если мы не продолжим и не создадим его. Если мы сравниваем заголовок каждого элемента с заголовком вкладки, которую хотим предотвратить, чтобы снова открыть. Если есть совпадение, мы просто переключаемся на вкладку и выходим из метода, если код для его создания не выполняется после потока программы. UserControl() Является ли класс, из которого я получаю контент для своей вкладки, вы можете его игнорировать.

Смежные вопросы