Скрытие / блокировка вкладок с помощью форм 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);