TabPage продолжает создаваться. C # - PullRequest
1 голос
/ 10 ноября 2011

TabPage продолжает создаваться, даже если вкладка уже существует в моем элементе управления вкладками.Пожалуйста, рассмотрите мой код ниже:

void button1_Click(object sender, EventArgs e)
{
    TabPage tabPage = new TabPage();
    tabPage.Name = "TestNewTab";
    tabPage.Text = "Tab Page";

    // Check if the tabpage is not yet existing
    if (!tabControl1.TabPages.Contains(tabPage))
    {
        // Add the new tab page
        tabControl1.TabPages.Add(tabPage);
    }
}

Что не так с моим кодом?Спасибо.

Ответы [ 2 ]

4 голосов
/ 10 ноября 2011

Я полагаю, что TabPages.Contains проверяет ссылку на объект, так как вы каждый раз создаете новую страницу TabPage, это не будет один и тот же объект.Попробуйте вместо этого просмотреть страницы вкладок и сравнить свойство Name.

1 голос
/ 10 ноября 2011

Проблема в том, что .Contains будет проверять наличие равной ссылки, которая не совпадает с равным значением, при поиске ссылочного типа, например TabPage. Простой способ решить вашу проблему - сделать что-то вроде этого:

TabPage tabPage;

void button1_Click(object sender, EventArgs e)
{
    // Check if the tabpage doesn't exist yet:
    if (tabPage == null)
    {
        // Create the tab page:
        tabPage = new TabPage();
        tabPage.Name = "TestNewTab";
        tabPage.Text = "Tab Page";

        // Add the new tab page:
        tabControl1.TabPages.Add(tabPage);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...