Скрытие / блокировка вкладок с помощью форм Windows в C # - PullRequest
4 голосов
/ 26 апреля 2010

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

Если нажать кнопку входа в систему, вся система выйдет из строя, и если я нажму кнопку VISITANT, одна вкладка должна исчезнуть или заблокироваться или что-то в этом роде.

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'

и тот, который я получаю за попытку2, -

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 26 апреля 2010

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

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

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

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

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

 mainwindow menu = new mainwindow();
 menu.Show();
 menu.HideTab();
0 голосов
/ 26 апреля 2010

вам нужно открыть вкладку, объявив открытое свойство. Затем вы можете получить к нему доступ, используя 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();
}

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

0 голосов
/ 26 апреля 2010

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

tabControl1.TabPages.Remove(tabPage1);

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

tabControl1.TabPages.Add(tabPage1);
...