Как я могу перемещаться между формами
Я newbiest в C# и окно форма я делаю проект, и я встречаю некоторую проблему
- как я могу перемещаться по формам в окне( у меня есть полоса меню, при нажатии на нее будет отображаться элемент "бренд", поэтому, когда я нажимаю на него, он должен открыться в окне, я не хочу что-то использовать mdiparent / container, у меня есть form1 и form2, затем я помещаю полосу меню в form1, в которой есть что-то внутри form1, если использовать mdiparent / container, содержимое form1 / thing будет блокировать формы Form2 )
2.я использую приведенный ниже код, и проблема в том, что я хочу закрыть form1, который я нажимаю на "бренд" в полосе меню...но как???
public partial class Form1 : Form
{
// i put the menu strip in form1 design
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void Check_Click(object sender, EventArgs e)
{
Form2 Check = new Form2();
Check.Show();
}
}
3 ответов
вы не можете просто закрыть Form1
как это основная форма, но вы можете скрыть его. Использовать this.Hide()
.
private void Check_Click(object sender, EventArgs e)
{
Form2 Check= new Form2();
Check.Show();
Hide();
}
[EDIT]
Не уверен, что это то, что спрашивают. Но...
существует множество способов реализации навигации между формами, например:
на Form1
:
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.Tag = this;
form2.Show(this);
Hide();
}
на Form2
:
private void button1_Click(object sender, EventArgs e)
{
var form1 = (Form1)Tag;
form1.Show();
Close();
}
Я думаю, вы должны создать usercontrols, а не различные формы. Затем вы можете добавить свои usercontrols в свою главную панель в соответствии с выбором в меню.
изначально что-то вроде ниже
this.panel.Controls.Clear();
this.panel.Controls.Add(new UserControl_For_Form1());
после того, как пользователь щелкните какой-либо другой выбор в меню.
this.panel.Controls.Clear();
this.panel.Controls.Add(new UserControl_For_Form2());
если вы действительно хотите использовать то, как вы используете в данный момент. Ниже код поможет.
добавьте свойство Form1 для Form2 и проанализируйте экземпляр form1 Form2 со своим конструктором.
public partial class Form2 : Form
{
private Form1 form1;
public Form2(Form1 myForm)
{
InitializeComponent();
form1 = myForm;
}
}
показать form2 и скрыть form1.
private void Check_Click(object sender, EventArgs e)
{
Form2 Check= new Form2(this);
Check.Show();
Hide();
}
в событии закрытия form2 теперь вы можете показать экземпляр form1, который находится в form2, и закрыть form2.
использование форма MDI другой вариант для вас.
прошло 7 лет с тех пор, как этот вопрос был задан, но я хочу дать ответ, если кто-то все еще ищет решение. Если вы используете DevExpress, вы можете добавить рамку навигации в свою программу. Вы можете переключаться между различными компонентами, такими как GridControl, GroupBox и так далее. Таким образом, вам не нужно создавать дополнительную форму для навигации между формами.