C# 在函数中隐藏FormOne,显示FormTwo,然后隐藏FormTwo并继续使用FormOne,其中';停止
所以,在我的代码中,我已经完成了隐藏和显示表单,但是当我返回到我的FormOne时,我不知道如何继续它停止的地方。例如: 表格一:C# 在函数中隐藏FormOne,显示FormTwo,然后隐藏FormTwo并继续使用FormOne,其中';停止,c#,show-hide,C#,Show Hide,所以,在我的代码中,我已经完成了隐藏和显示表单,但是当我返回到我的FormOne时,我不知道如何继续它停止的地方。例如: 表格一: private void addButton_Click(object sender, EventArgs e) { ObjTwo objTwo = new ObjTwo(); objTwo.RefToFormOne = this; this.Hide();
private void addButton_Click(object sender, EventArgs e)
{
ObjTwo objTwo = new ObjTwo();
objTwo.RefToFormOne = this;
this.Hide();
ObjTwo.Show();
***string variable = ObjTwo.variable;
anotherFuction();***
}
表格二:
{
public Form RefToFormOne { get; set; }
private void input_textBox_TextChanged(object sender, EventArgs e)
{
string variable = input_textBox.Text;
}
private void okButton_Click(object sender, EventArgs e)
{
this.Hide();
RefToFormOne.Show();
}
}
所以,我想要的是:当我回到表单一(在我点击表单二中的OK按钮之后),我想在显示表单二(粗体文本)之后继续这个函数。
有人能帮我吗?我一直在努力解决这个问题:(您可以使用
ShowDialog
而不是Show,它的作用与Show类似,只是暂停了调用方法
文件:
如果上述操作不起作用
在第一个表单中,您可以创建一个函数,在第二个表单隐藏时接收来自第二个表单的调用
因此,在第一种形式中:
private void addButton_Click(object sender, EventArgs e)
{
ObjTwo objTwo = new ObjTwo();
objTwo.RefToFormOne = this;
this.Hide();
ObjTwo.Show();
//PUT EVERYTHING IN THE FUNCTION BELOW
}
public void ShowFormAndDoYourStuff()
{
//Do your stuff
}
第二种形式:
//Instead of this:
//public Form RefToFormOne { get; set; }
//Do this below:
public Form1 RefToFormOne { get; set; }
private void okButton_Click(object sender, EventArgs e)
{
this.Hide();
RefToFormOne.Show();
RefToFormOne.ShowFormAndDoYourStuff();
}
希望这有帮助!您可以使用与Show类似的ShowDialog
来代替Show
,只是它会暂停调用方法
文件:
如果上述操作不起作用
在第一个表单中,您可以创建一个函数,在第二个表单隐藏时接收来自第二个表单的调用
因此,在第一种形式中:
private void addButton_Click(object sender, EventArgs e)
{
ObjTwo objTwo = new ObjTwo();
objTwo.RefToFormOne = this;
this.Hide();
ObjTwo.Show();
//PUT EVERYTHING IN THE FUNCTION BELOW
}
public void ShowFormAndDoYourStuff()
{
//Do your stuff
}
第二种形式:
//Instead of this:
//public Form RefToFormOne { get; set; }
//Do this below:
public Form1 RefToFormOne { get; set; }
private void okButton_Click(object sender, EventArgs e)
{
this.Hide();
RefToFormOne.Show();
RefToFormOne.ShowFormAndDoYourStuff();
}
希望这有帮助!完全同意Andy的观点,您的代码应该如下所示:
private void addButton_Click(object sender, EventArgs e)
{
var addPerson = new AddPersonDialog();
addPerson.ShowDialog();
string personName = addPerson.PersonName;
anotherFuction();
}
第二种形式
class AddPersonDialog{
public string PersonName { get; set; }
private void input_textBox_TextChanged(object sender, EventArgs e)
{
PersonName = input_textBox.Text;
}
private void okButton_Click(object sender, EventArgs e)
{
this.Close();
}
}
这是一种标准的ui方式,可以使窗体显示在前一个窗体的前面,防止前一个窗体在前一个窗体关闭之前被使用。就像您使用过的每个保存对话框一样
ShowDialog从概念上讲会在调用它的位置暂停,并且只有在关闭ShowDialog的表单时才会继续(就像在执行MessageBox.Show时)
小心使用变量和类名。在原始代码中,您使用了ObjTwo ObjTwo=new ObjTwo;ObjTwo.Show()
,也就是说,您创建了一个实例,但随后忽略了该实例,并尝试在类上调用Show。在.NET的某些上下文中,它甚至可以使用表单。VB至少有这个可怕的“把戏”它自动在应用程序上生成每个表单的实例,并调用它们类的名称——但在c中,变量不能与类型同名,并且c不采取相同的自动创建步骤,因此ObjTwo.Show()不是问题(它将给出“需要对象引用”错误)
在这个例子中,我还大胆地使用了更多描述性的变量名(尽管我没有使用其他函数,因为它很有趣)。在编码时,请使用比“class1”、“obj2”、“variable”、“textboxX”更合适的名称-我们不仅需要在您寻求帮助时理解您的代码,而且在您必须解决问题时,您还需要在6个月内理解代码。尝试阅读代码,这是一个持续的翻译练习,“存储人名的是textbox23还是textbox27?我将打开表单并查看”当您将文本框属性网格中的(名称)行放到表单上并编写personNameTextbox
“通往智慧的第一步是直呼事物的真名”——中国谚语完全同意安迪的观点,你的代码应该是这样的:
private void addButton_Click(object sender, EventArgs e)
{
var addPerson = new AddPersonDialog();
addPerson.ShowDialog();
string personName = addPerson.PersonName;
anotherFuction();
}
第二种形式
class AddPersonDialog{
public string PersonName { get; set; }
private void input_textBox_TextChanged(object sender, EventArgs e)
{
PersonName = input_textBox.Text;
}
private void okButton_Click(object sender, EventArgs e)
{
this.Close();
}
}
这是一种标准的ui方式,可以使窗体显示在前一个窗体的前面,防止前一个窗体在前一个窗体关闭之前被使用。就像您使用过的每个保存对话框一样
ShowDialog从概念上讲会在调用它的位置暂停,并且只有在关闭ShowDialog的表单时才会继续(就像在执行MessageBox.Show时)
小心使用变量和类名。在原始代码中,您使用了ObjTwo ObjTwo=new ObjTwo;ObjTwo.Show()
,也就是说,您创建了一个实例,但随后忽略了该实例,并尝试在类上调用Show。在.NET的某些上下文中,它甚至可以使用表单。VB至少有这个可怕的“把戏”它自动在应用程序上生成每个表单的实例,并调用它们类的名称——但在c中,变量不能与类型同名,并且c不采取相同的自动创建步骤,因此ObjTwo.Show()不是问题(它将给出“需要对象引用”错误)
在这个例子中,我还大胆地使用了更多描述性的变量名(尽管我没有使用其他函数,因为它很有趣)。在编码时,请使用比“class1”、“obj2”、“variable”、“textboxX”更合适的名称-我们不仅需要在您寻求帮助时理解您的代码,而且在您必须解决问题时,您还需要在6个月内理解代码。尝试阅读代码,这是一个持续的翻译练习,“存储人名的是textbox23还是textbox27?我将打开表单并查看”当您将文本框属性网格中的(名称)行放到表单上并编写personNameTextbox
“通往智慧的第一步是将事物称为它们的专有名称”-中国谚语为什么不将Form2显示为模态?显示/隐藏这样的表单不是典型的UI体验。为什么不将Form2显示为模态?显示/隐藏这样的表单不是典型的UI体验。非常感谢。我刚刚开始学习。谢谢你的指数运算。是的,我知道na明:这样使用名称是不正确的。在我的项目中,我对函数、对象等使用了其他名称。但是,再次感谢。非常感谢。我刚刚开始学习这个。谢谢你的指数运算。是的,我知道这样使用名称是不正确的。在我的项目中,我使用了其他名称