С чем сравнивается метод ContainsKey () элемента управления Tab? - PullRequest
2 голосов
/ 16 декабря 2010

Я хочу создать элемент управления вкладкой, который открывает содержимое только один раз.Каждый открытый элемент должен проверить контейнер, чтобы убедиться, что он еще не отображается.Я считаю, что я хочу использовать метод bool TabControl.TabPages.ContainsKey (строковый ключ) , однако он всегда возвращает значение false .

IЯ создал обходной путь, в котором я храню объект в отдельном списке, который я синхронизирую с элементом управления вкладками, но он кажется очень неправильным.У меня есть список в свойстве TabPages элемента управления, поэтому я должен иметь возможность запрашивать его.

Я пропустил свойство?Является ли мое ожидание этого метода и что он выполняет правильно?Как мне заставить его правильно идентифицировать мои открытые вкладки?

Вот пример кода, который похож на то, что я делаю:

private void _fillTabControl()
{
    List<string> keys = new List<string>() { "one", "two" };
    foreach (string key in keys)
        _addTab(key);

    bool alreadyOpened = tabControl.TabPages.ContainsKey(keys[0]);
}
private void _addTab(string key)
{
    TextBox textBox = new TextBox();
    textBox.Text = key;

    TabPage tab = new TabPage();
    tab.Text = key;

    tab.Controls.Add(textBox);
    tabControl.TabPages.Add(tab);
}

1 Ответ

1 голос
/ 16 декабря 2010

В документе все сказано:

"Свойство Name соответствует ключу для TabPage в коллекции TabControl.TabPageCollection."

Вы используетеТекстовое свойство, вы должны установить

tab.Name = "MyName";

, и тогда

tabControl.TabPages.ContainsKey("MyName");

вернет true;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...