2016-03-08 4 views
0

У меня есть форма для входа в систему и другая форма. когда пользователь x и пароль y, я хочу показать форму полностью, и у меня нет проблемы с этой частью, но когда пользователь z с паролем t login Я хочу, чтобы он не мог отобразить 2 из 3 страниц вкладок. в общем, я был бы очень признателен, если бы вы могли сказать мне, как скрыть вкладку формы из другой формы.скрыть вкладки из другой формы в C#

private void button1_Click(object sender, EventArgs e) 
    { 
     if (textBox1.Text == "x" && textBox2.Text == "123") 
     { 
      this.Hide(); 
      Form1 fr1 = new Form1(); 
      fr1.ShowDialog(); 

     } 
     else 
     { 
      if (textBox1.Text == "z" && textBox2.Text == "t") 
      { 
       this.Hide(); 
       Form1 fr1 = new Form1(); 
       //how can I hide 2 out of 3 tabpages on form1(fr1) for this user 
       fr1.ShowDialog(); 




      } 
     } 
+0

У вас также есть главный -form, который начинает регистрационную форму или является первой формой входа, например основная форма? – icbytes

+0

Как бы вы скрывали tapgages в той же форме? – TaW

+0

моя форма для входа в систему - это форма запуска и когда пользователь с именем пользователя z и паролем t вошел в систему. Я хочу, чтобы он не показывал tapepage2 и tabpage3 на form1 (fr1) –

ответ

0

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

Похоже, вам нужно средство передачи информации от одного Form к другому. Часто это может быть достигнуто с помощью конструктора Form, так что при создании экземпляра присутствует соответствующая информация о том, как отображать определенные элементы управления. Если по какой-то причине использование подхода конструктора не является идеальным, вы можете иметь общий механизм для хранения и сбора соответствующих данных. Обычно переопределение OnLoad является хорошим выбором для совершения вызова для сбора указанных данных.

После того, как у вас есть необходимые данные, вы можете использовать его для отображения или скрытия закладки. Обычно я предлагаю data binding и используя для WinForms.

Например, у вас может быть модель, которая представляет различные детали о пользователе, который вошел в систему, а затем привязывается к различным свойствам управления.

Как я уже говорил, вы хотели бы, чтобы связать видимость с его конструктором Form1. Поэтому добавьте в конструктор:

private bool _hideTwoOutOfThreeTabs; 

public Form1(bool hideTwoOutOfThreeTabs = false) 
{ 
    _hideTwoOutOfThreeTabs = hideTwoOutOfThreeTabs; 
} 

перекроет описанное OnLoad так:

protected override void OnLoad(EventArgs e) 
{ 
    base.OnLoad(e); 

    if (_hideTwoOutOfThreeTabs) 
    { 
     foreach (var tabPage in tabControl1.TabPages.Cast<TabPage>()) 
     { 
      // TODO: Some logical test to ensure this is the desired tab control to hide 
      // if (tabPage) 
      { 
       tabPage.Visible = false; 
      } 
     } 
    } 
} 

Наконец ваш метод будет в конечном итоге выглядит так:

private void button1_Click(object sender, EventArgs e) 
{ 
    var textOne = textBox1.Text, 
     textTwo = textBox2.Text; 

    if (textOne == "x" && textTwo == "123") 
    { 
     Hide(); 
     using(var fr1 = new Form1()) 
     { 
      fr1.ShowDialog(); 
     } 
    } 
    else if (textOne == "z" && textTwo == "t") 
    { 
     Hide(); 
     using(var fr1 = new Form1(true)) 
     { 
      fr1.ShowDialog(); 
     } 
    } 
} 
+0

Спасибо за ваш отзыв, хотя в большинстве случаев я не понял причину Я новичок в C#. –

+0

Благодарим вас за полезный ответ. но не следует скрыватьTwoOutOfThreeTabs, а true вместо false? Я использую этот код, защищенный переопределить void OnLoad (EventArgs e) { base.OnLoad (e); , если (_hideTwoOutOfThreeTabs) { Еогеасп (вар TabPage в tabControl1.TabPages.Cast ()) { , если (TabPage == tabPage2) tabPage2.Hide(); если (tabPage == tabPage3) tabPage3.Hide(); } –

+0

Это должно быть правдой, когда конструктору говорят, что это правда. Посмотрите @ эту строку '(textOne ==" z "&& textTwo ==" t ")' в 'button1_Click'. Если это так, то 'Form1' создается с помощью' true'. –

 Смежные вопросы

  • Нет связанных вопросов^_^