Скрытие / блокировка вкладок с помощью форм Windows в C#

Дело в том, что у меня есть "окно входа в систему" ​​и "главное окно", которое вызывается после нажатия кнопки входа или кнопки "ПОСЕТИТЕЛЯ"

Если нажать кнопку входа в систему, то выйдет вся система, и если я нажму кнопку "ПОСЕТИТЕЛЯ", одна вкладка должна исчезнуть или заблокироваться или что-то в этом роде.

private void visitant(object sender, EventArgs e)
{
        mainwindow menu = new mainwindow();
        menu.Show();

        //mainwindow.tabPage1.Enabled = false; //attempt1
        //mainwindow.tabPage1.Visible = false; //attempt1

        //System.Windows.Forms.tabPage1.Enabled = false;//attempt2
        //System.Windows.Forms.tabPage1.Visible = false;//attempt2

        this.Hide();
}

ошибки, которые я получаю за использование попытки1:

Ошибка 1"System.mainwindow.tabPage1" недоступна из-за уровня защиты "
Ошибка 2 Ссылка на объект требуется для нестатического поля, метода или свойства 'System.mainwindow.tabPage1'

и тот, который я получаю за использование

Ошибка 1 Тип или имя пространства имен "tabPage1" не существует в пространстве имен "System.Windows.Forms" (отсутствует ссылка на сборку?)

как вы, наверное, догадались, "tabPage1" - это вкладка, которую мне нужно скрыть при нажатии кнопки посетителя.

Я не могу думать о каких-либо подробностях, я буду рядом, чтобы предоставить любую дополнительную информацию

Заранее спасибо.

3 ответа

Решение

Элементы управления, которые вы добавляете в форму, по умолчанию недоступны для общего доступа. Ваш код "попытки1" будет правильным, за исключением этой детали.

(РЕДАКТИРОВАТЬ: чтобы исправить это, измените свойство "Модификаторы" tabPage1 быть Public или же Internal - это позволяет другим классам видеть эти элементы управления вне формы.)

Тем не менее, лучший подход, чем сделать эти элементы управления видимыми, заключается в создании нового открытого метода на вашем mainwindow класс, как то так:

public void HideTab()
{
   tabPage1.Enabled = false;
   tabPage1.Visible = false;
}

Затем в своем примере кода вызовите новый метод после создания / отображения формы:

 mainwindow menu = new mainwindow();
 menu.Show();
 menu.HideTab();

Вам нужно выставить элемент управления вкладки, объявив открытое свойство. Тогда вы можете получить к нему доступ, используя menu это ваш экземпляр.

Лучший вариант - выставить свойство в главном окне, как

public bool ShowTabPage1 { get; set; }

а затем установите его в true или false,

private void visitant(object sender, EventArgs e)
{
        mainwindow menu = new mainwindow();
        menu.ShowTabPage1 = false;
        menu.Show();         

        this.Hide();
}

наконец, примените логику в событии загрузки формы главного окна.

Предполагая, что вы используете System.Windows.Forms.TabControl для ваших tabPages с именем tabControl1, используйте следующее:

tabControl1.TabPages.Remove(tabPage1);

Если вы хотите снова просмотреть tabPage1, используйте:

tabControl1.TabPages.Add(tabPage1);
Другие вопросы по тегам