Windows应用程序(C#.Net)-保留文本框值
下面是我的场景:(Windows应用程序/C#.Net) 我有一个Form1,它正在做一些计算,选择选项作为案例1,点击按钮,它会将所有文本框值推送到Form2。这很好用 现在,如果我再次来到表格1,将选项更改为案例2,计算并按下按钮,它将删除先前添加的值 我想保留这些值,并将这些值添加到Form2中的另一组文本框中 代码:单击“添加”按钮后,在表格1中:Windows应用程序(C#.Net)-保留文本框值,c#,winforms,C#,Winforms,下面是我的场景:(Windows应用程序/C#.Net) 我有一个Form1,它正在做一些计算,选择选项作为案例1,点击按钮,它会将所有文本框值推送到Form2。这很好用 现在,如果我再次来到表格1,将选项更改为案例2,计算并按下按钮,它将删除先前添加的值 我想保留这些值,并将这些值添加到Form2中的另一组文本框中 代码:单击“添加”按钮后,在表格1中: private void button1_Click(object sender, EventArgs e) { F
private void button1_Click(object sender, EventArgs e)
{
Form2 eigthForm = new Form2();
if(comboBox1.Text == "Case 1")
{
eigthForm.text2.Text = textBox1.Text;
eigthForm.text3.Text = textBox8.Text;
}
if (comboBox1.Text == "Case 2")
{
eigthForm.text4.Text = textBox1.Text;
eigthForm.text5.Text = textBox8.Text;
}
好的,我明白你现在的要求。您可以按如下方式使用Singleton模式 Form1按钮
private void button1_Click(object sender, EventArgs e)
{
Form2.Instance.AddText1and2("Hello", "World");
}
private void button2_Click(object sender, EventArgs e)
{
Form2.Instance.AddText3("Foo");
}
表2我们将改为单例模式
private static volatile Form2 instance = null;
private static object lockThis = new object();
private Form2()
{
InitializeComponent();
}
public static Form2 Instance
{
get
{
if (instance == null)
{
lock(lockThis)
{
if (instance == null)
{
instance = new Form2();
}
}
}
return instance;
}
}
现在我们的方法是将文本放置在正确的位置
public void AddText1and2(string txt1, string txt2)
{
textBox1.Text = txt1;
textBox2.Text = txt2;
this.Show();
}
public void AddText3(string txt3)
{
textBox3.Text = txt3;
this.Show();
}
如果希望能够关闭窗口并重新打开它以保存值,则需要使用表单关闭事件
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
this.Hide();
e.Cancel = true;
}
您必须防止实际关闭。这将处理对象,我们不希望这样
这将在表格2中保留您的所有设置
如果不想执行上述操作,可以向项目中添加一个新类,如下所示
class Global
{
public static string Value1 { get; set; }
public static string Value2 { get; set; }
}
if(comboBox1.Text.Equals("Case 1"))
{
}
else if (comboBox1.Text.Equals("Case 2"))
{
}
表格一
if(comboBox1.Text == "Case 1")
{
Global.Value1 = textBox1.Text;
Global.Value2 = textBox8.Text;
}
在Form2加载事件中
text2.Text = Global.Value1;
text3.Text = Global.Value2;
您还应该修改if逻辑 如果是“案例1”,组合框将永远不会==“案例2”,但您 仍在运行下一个if语句 你应该用这样的东西
class Global
{
public static string Value1 { get; set; }
public static string Value2 { get; set; }
}
if(comboBox1.Text.Equals("Case 1"))
{
}
else if (comboBox1.Text.Equals("Case 2"))
{
}
或
好的,我明白你现在的要求。您可以按如下方式使用Singleton模式 Form1按钮
private void button1_Click(object sender, EventArgs e)
{
Form2.Instance.AddText1and2("Hello", "World");
}
private void button2_Click(object sender, EventArgs e)
{
Form2.Instance.AddText3("Foo");
}
表2我们将改为单例模式
private static volatile Form2 instance = null;
private static object lockThis = new object();
private Form2()
{
InitializeComponent();
}
public static Form2 Instance
{
get
{
if (instance == null)
{
lock(lockThis)
{
if (instance == null)
{
instance = new Form2();
}
}
}
return instance;
}
}
现在我们的方法是将文本放置在正确的位置
public void AddText1and2(string txt1, string txt2)
{
textBox1.Text = txt1;
textBox2.Text = txt2;
this.Show();
}
public void AddText3(string txt3)
{
textBox3.Text = txt3;
this.Show();
}
如果希望能够关闭窗口并重新打开它以保存值,则需要使用表单关闭事件
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
this.Hide();
e.Cancel = true;
}
您必须防止实际关闭。这将处理对象,我们不希望这样
这将在表格2中保留您的所有设置
如果不想执行上述操作,可以向项目中添加一个新类,如下所示
class Global
{
public static string Value1 { get; set; }
public static string Value2 { get; set; }
}
if(comboBox1.Text.Equals("Case 1"))
{
}
else if (comboBox1.Text.Equals("Case 2"))
{
}
表格一
if(comboBox1.Text == "Case 1")
{
Global.Value1 = textBox1.Text;
Global.Value2 = textBox8.Text;
}
在Form2加载事件中
text2.Text = Global.Value1;
text3.Text = Global.Value2;
您还应该修改if逻辑 如果是“案例1”,组合框将永远不会==“案例2”,但您 仍在运行下一个if语句 你应该用这样的东西
class Global
{
public static string Value1 { get; set; }
public static string Value2 { get; set; }
}
if(comboBox1.Text.Equals("Case 1"))
{
}
else if (comboBox1.Text.Equals("Case 2"))
{
}
或
好的,我明白你现在的要求。您可以按如下方式使用Singleton模式 Form1按钮
private void button1_Click(object sender, EventArgs e)
{
Form2.Instance.AddText1and2("Hello", "World");
}
private void button2_Click(object sender, EventArgs e)
{
Form2.Instance.AddText3("Foo");
}
表2我们将改为单例模式
private static volatile Form2 instance = null;
private static object lockThis = new object();
private Form2()
{
InitializeComponent();
}
public static Form2 Instance
{
get
{
if (instance == null)
{
lock(lockThis)
{
if (instance == null)
{
instance = new Form2();
}
}
}
return instance;
}
}
现在我们的方法是将文本放置在正确的位置
public void AddText1and2(string txt1, string txt2)
{
textBox1.Text = txt1;
textBox2.Text = txt2;
this.Show();
}
public void AddText3(string txt3)
{
textBox3.Text = txt3;
this.Show();
}
如果希望能够关闭窗口并重新打开它以保存值,则需要使用表单关闭事件
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
this.Hide();
e.Cancel = true;
}
您必须防止实际关闭。这将处理对象,我们不希望这样
这将在表格2中保留您的所有设置
如果不想执行上述操作,可以向项目中添加一个新类,如下所示
class Global
{
public static string Value1 { get; set; }
public static string Value2 { get; set; }
}
if(comboBox1.Text.Equals("Case 1"))
{
}
else if (comboBox1.Text.Equals("Case 2"))
{
}
表格一
if(comboBox1.Text == "Case 1")
{
Global.Value1 = textBox1.Text;
Global.Value2 = textBox8.Text;
}
在Form2加载事件中
text2.Text = Global.Value1;
text3.Text = Global.Value2;
您还应该修改if逻辑 如果是“案例1”,组合框将永远不会==“案例2”,但您 仍在运行下一个if语句 你应该用这样的东西
class Global
{
public static string Value1 { get; set; }
public static string Value2 { get; set; }
}
if(comboBox1.Text.Equals("Case 1"))
{
}
else if (comboBox1.Text.Equals("Case 2"))
{
}
或
好的,我明白你现在的要求。您可以按如下方式使用Singleton模式 Form1按钮
private void button1_Click(object sender, EventArgs e)
{
Form2.Instance.AddText1and2("Hello", "World");
}
private void button2_Click(object sender, EventArgs e)
{
Form2.Instance.AddText3("Foo");
}
表2我们将改为单例模式
private static volatile Form2 instance = null;
private static object lockThis = new object();
private Form2()
{
InitializeComponent();
}
public static Form2 Instance
{
get
{
if (instance == null)
{
lock(lockThis)
{
if (instance == null)
{
instance = new Form2();
}
}
}
return instance;
}
}
现在我们的方法是将文本放置在正确的位置
public void AddText1and2(string txt1, string txt2)
{
textBox1.Text = txt1;
textBox2.Text = txt2;
this.Show();
}
public void AddText3(string txt3)
{
textBox3.Text = txt3;
this.Show();
}
如果希望能够关闭窗口并重新打开它以保存值,则需要使用表单关闭事件
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
this.Hide();
e.Cancel = true;
}
您必须防止实际关闭。这将处理对象,我们不希望这样
这将在表格2中保留您的所有设置
如果不想执行上述操作,可以向项目中添加一个新类,如下所示
class Global
{
public static string Value1 { get; set; }
public static string Value2 { get; set; }
}
if(comboBox1.Text.Equals("Case 1"))
{
}
else if (comboBox1.Text.Equals("Case 2"))
{
}
表格一
if(comboBox1.Text == "Case 1")
{
Global.Value1 = textBox1.Text;
Global.Value2 = textBox8.Text;
}
在Form2加载事件中
text2.Text = Global.Value1;
text3.Text = Global.Value2;
您还应该修改if逻辑 如果是“案例1”,组合框将永远不会==“案例2”,但您 仍在运行下一个if语句 你应该用这样的东西
class Global
{
public static string Value1 { get; set; }
public static string Value2 { get; set; }
}
if(comboBox1.Text.Equals("Case 1"))
{
}
else if (comboBox1.Text.Equals("Case 2"))
{
}
或
这里有一个选择
Form2 inst = null;
private void button1_Click(object sender, EventArgs e)
{
if(inst == null)
inst = new Form2();
if(comboBox1.Text == "Case 1")
{
inst.text2.Text = textBox1.Text;
inst.text3.Text = textBox8.Text;
}
if (comboBox1.Text == "Case 2")
{
inst.text4.Text = textBox1.Text;
inst.text5.Text = textBox8.Text;
}
inst.Show();
}
这里有一个选择
Form2 inst = null;
private void button1_Click(object sender, EventArgs e)
{
if(inst == null)
inst = new Form2();
if(comboBox1.Text == "Case 1")
{
inst.text2.Text = textBox1.Text;
inst.text3.Text = textBox8.Text;
}
if (comboBox1.Text == "Case 2")
{
inst.text4.Text = textBox1.Text;
inst.text5.Text = textBox8.Text;
}
inst.Show();
}
这里有一个选择
Form2 inst = null;
private void button1_Click(object sender, EventArgs e)
{
if(inst == null)
inst = new Form2();
if(comboBox1.Text == "Case 1")
{
inst.text2.Text = textBox1.Text;
inst.text3.Text = textBox8.Text;
}
if (comboBox1.Text == "Case 2")
{
inst.text4.Text = textBox1.Text;
inst.text5.Text = textBox8.Text;
}
inst.Show();
}
这里有一个选择
Form2 inst = null;
private void button1_Click(object sender, EventArgs e)
{
if(inst == null)
inst = new Form2();
if(comboBox1.Text == "Case 1")
{
inst.text2.Text = textBox1.Text;
inst.text3.Text = textBox8.Text;
}
if (comboBox1.Text == "Case 2")
{
inst.text4.Text = textBox1.Text;
inst.text5.Text = textBox8.Text;
}
inst.Show();
}
发布一些代码。嗨,马特,发布代码。请看一下代码并提出解决方案。谢谢。每次单击按钮时,您都在创建Form2的新实例。它将不会保留这些值,因为它是一个新实例。拥有一个全局对象(静态)来保存您的所有值将是一个很好的起点。像那样公开文本框不是一个好主意。关于全球事物的一些想法,请参见Tsukasa答案。发布一些代码。Hi Matt,发布代码。请看一下代码并提出解决方案。谢谢。每次单击按钮时,您都在创建Form2的新实例。它将不会保留这些值,因为它是一个新实例。拥有一个全局对象(静态)来保存您的所有值将是一个很好的起点。像那样公开文本框不是一个好主意。关于全球事物的一些想法,请参见Tsukasa答案。发布一些代码。Hi Matt,发布代码。请看一下代码并提出解决方案。谢谢。每次单击按钮时,您都在创建Form2的新实例。它将不会保留这些值,因为它是一个新实例。拥有一个全局对象(静态)来保存您的所有值将是一个很好的起点。像那样公开文本框不是一个好主意。关于全球事物的一些想法,请参见Tsukasa答案。发布一些代码。Hi Matt,发布代码。请看一下代码并提出解决方案。谢谢。每次单击按钮时,您都在创建Form2的新实例。它将不会保留这些值,因为它是一个新实例。拥有一个全局对象(静态)来保存您的所有值将是一个很好的起点。像那样公开文本框不是一个好主意。请参阅Tsukasa的答案,了解有关全球事物的一些想法。Hi Tsukasa,请您根据我上面的代码推荐示例。我应该如何处理全球事务。谢谢,谢谢Tsukasa,我正在尝试你的解决方案。将检查