首先,我是C#和一般编程的新手。我搜索得非常彻底,但我只能找到有人想要打开另一个表单并隐藏按下按钮的实例。
在这种情况下,当我在主“Form1”以外的任何表格上按(X)时,我的程序连续运行时出现问题。表单到表单导航工作正常。即:单击按钮隐藏主窗口并打开相应的表单,该表单上的“后退”按钮隐藏自身并显示(我猜另一个实例)之前的“主”表单。 - 我也可以使用一些指导。大声笑
我不介意如果按下X就关闭整个应用程序,但是我需要在所有窗口上显示“X”,如果按下X,所有窗口都需要退出整个应用程序。有什么建议?
提前致谢,
代码:
Form1中:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void btnTransaction_Click(object sender, EventArgs e)
{
Transaction transactionForm = new Transaction();
Form mainForm = this;
transactionForm.Show();
mainForm.Hide();
}
}
交易表格:
public partial class Transaction : Form
{
public Transaction()
{
InitializeComponent();
}
private void button4_Click(object sender, EventArgs e)
{
Form1 mainForm = new Form1(); //not sure if I'm doing this right..
this.Hide(); //I don't know how to "reuse" the original Form1
mainForm.Show();
}
}
答案 0 :(得分:1)
我建议您为此创建一个MDI容器。将MenuStrip从ToolBox拖放到Form1,然后在MenuStrip中创建ToolStripMenuItem“form2”。 现在你可以像这样在form1中调用你的form2
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
IsMdiContainer = true;
}
Form2 frm2;
public void CreateMdiChild<T>(ref T t) where T : Form, new()
{
if (t == null || t.IsDisposed)
{
t = new T();
t.MdiParent = this;
t.Show();
}
else
{
if (t.WindowState == FormWindowState.Minimized)
{
t.WindowState = FormWindowState.Normal;
}
else
{
t.Activate();
}
}
}
private void form2ToolStripMenuItem_Click(object sender, EventArgs e)
{
CreateMdiChild<Form2>(ref frm2);
}
}
通过单击ToolStripMenuItem,您可以触发ToolStripmenuItem事件,它将在Form1中显示Form2作为子项,即mdi容器,并在关闭form1时关闭。
答案 1 :(得分:0)
public partial class Transaction : Form
{
Form1 _mainForm;
public Transaction(Form1 mainForm)
{
InitializeComponent();
_mainForm = mainForm;
}
private void button4_Click(object sender, EventArgs e)
{
this.Close(); //since you always create a new one in Form1
_mainForm.Show();
}
}
答案 2 :(得分:0)
您可以使用Form.ShowDialog()
调用此方法时,代码跟随(“ShowDialog()”下面的代码)直到对话框关闭后才会执行。
private void button4_Click(object sender, EventArgs e)
{
Form1 mainForm = new Form1();
this.Hide();
mainForm.ShowDialog();
this.Show();
}
答案 3 :(得分:0)
您可以使用ShowDialog()
方法,该方法要求用户在返回上一个表单之前与新表单进行交互。例如,你可以试试这个:
public void btnTransaction_Click(object sender, EventArgs e)
{
using (var transactionForm = new Transaction())
{
this.Hide();
if (transactionForm.ShowDialog() == DialogResult.OK)
{
this.Show();
}
}
}
您可以在DialogResult
上设置TransactionForm
,如下所示:
private void button4_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Close();
}
这是在新表单上强制互动的一种非常标准的方式。
答案 4 :(得分:0)
protected override void OnClosing(CancelEventArgs e)
{
this.Hide();
menu menu = new menu("administrator");
menu.ShowDialog();
this.Close();
}
//快乐编码