C# 实时更改其他形式变量的值
我试图改变一些变量在另一个形式中的值。 我知道如何通过构造函数传递它,但这不是我想要的。我希望能够在不改变表单状态的情况下通过它。 我试图以初始形式创建公共变量,但仍然无法从另一个访问它们来修改值 第一种形式是C# 实时更改其他形式变量的值,c#,winforms,C#,Winforms,我试图改变一些变量在另一个形式中的值。 我知道如何通过构造函数传递它,但这不是我想要的。我希望能够在不改变表单状态的情况下通过它。 我试图以初始形式创建公共变量,但仍然无法从另一个访问它们来修改值 第一种形式是 public partial class Main : Form 我有一个变量: public bool showingTexturePacks = false; 我尝试使用以下方法从第二个表单(公共部分类TexturePacksListViewer:form)修改它: privat
public partial class Main : Form
我有一个变量:
public bool showingTexturePacks = false;
我尝试使用以下方法从第二个表单(公共部分类TexturePacksListViewer:form)修改它:
private void TexturePacksListViewer_FormClosed(object sender, FormClosedEventArgs e)
{
Main main = new Main();
main.showingTexturePacks = true;
}
它不起作用
我知道如何通过构造函数传递它,但这不是我想要的
这里我假设您传递的是表单上定义的属性,而不是表单本身的实例
我希望能够在不改变表单状态的情况下通过它。我试图以初始形式创建公共变量,但仍然无法从另一个访问它们来修改值
如果将一个窗体的实例传递给另一个窗体,例如通过在第二个窗体的构造函数中传递实例,则可以访问第一个窗体的所有公共属性
public class Form1 : Form
{
public int Foo { get; set; }
}
public class Form2 : Form
{
public Form2(Form1 form1)
{
form1.Foo = 42;
}
}
在代码的某个地方
Form1 f1 = new Form1();
Form2 f2 = new Form2(f1);
请注意,和模式以一种强大、通用的方式支持您正在尝试做的事情。WPF是围绕MVVM模式构建的,尽管您也可以实现MVC或MVVM
更新
在你刚刚发布的代码中
Main main = new Main();
main.showingTexturePacks = true;
您正在创建一个全新的Main实例。如果您想影响程序中已经存在的实例,您需要以某种方式传入已经存在的实例
我知道如何通过构造函数传递它,但这不是我想要的
这里我假设您传递的是表单上定义的属性,而不是表单本身的实例
我希望能够在不改变表单状态的情况下通过它。我试图以初始形式创建公共变量,但仍然无法从另一个访问它们来修改值
如果将一个窗体的实例传递给另一个窗体,例如通过在第二个窗体的构造函数中传递实例,则可以访问第一个窗体的所有公共属性
public class Form1 : Form
{
public int Foo { get; set; }
}
public class Form2 : Form
{
public Form2(Form1 form1)
{
form1.Foo = 42;
}
}
在代码的某个地方
Form1 f1 = new Form1();
Form2 f2 = new Form2(f1);
请注意,和模式以一种强大、通用的方式支持您正在尝试做的事情。WPF是围绕MVVM模式构建的,尽管您也可以实现MVC或MVVM
更新
在你刚刚发布的代码中
Main main = new Main();
main.showingTexturePacks = true;
您正在创建一个全新的Main实例。如果您想影响程序中已经存在的实例,您需要以某种方式传入已经存在的实例。您的代码在哪里?我添加了代码的一部分您的代码在哪里?我添加了代码的一部分,就是:)我必须通过构造函数传递表单,以便更改变量。谢谢就是这样:)我必须通过构造函数传递表单,这样我才能更改变量。谢谢