为什么我的公共变量返回旧数据?

Eta*_*vad 0 .net c# string methods public

我有一个带有一个主窗口的简单.net应用程序.在处理数据之前,我想检查一些单选按钮.我有两套CS文件.Form1.cs(主窗口代码)和database.CS(实际运行数据库查询的代码.)database.cs需要能够从Form1.cs中读取一些设置.

在form1.cs上我有这个:

public string GetWorld
{
    get
    {

        if (this.radioButton_Dev.Checked == true)
        {
            MessageBox.Show("Returning Dev!");
            return "Dev";
        }
        else if (this.radioButton_Prod.Checked == true)
        {
            MessageBox.Show("Returning Prod!");
            return "Prod";
        }
        else
        {
            MessageBox.Show("Returning default!");
            return "Dev";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在database.cs我有这个:

  public SqlConnection GetConnectionString () {
        Form1 MainWindow;
        MainWindow = new Form1();
        if (MainWindow.GetWorld == "Dev" )
         {             
            SqlConnection Connection = new SqlConnection("Data Source = Dev .... blah blah blah...");
            return Connection;
        }
        else if (MainWindow.GetWorld == "Prod")
        {
            SqlConnection Connection = new SqlConnection("Data Source = Prod .... blah blah blah...");
            return Connection;
        }           
        else
        {
            SqlConnection Connection = new SqlConnection("Data Source = Dev .... blah blah blah...");
            return Connection;
        }   
    }
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,无论我检查了什么单选按钮,它总是选择顶部开发选项.

我可以使用一些变通方法(使单选按钮作为调用database.CS的一部分传递)但我不明白为什么这不能正常工作.对我来说,似乎方法GetConnectionString()基本上是在应用程序启动时拉取表单数据,而从未实际查找过.

如果在Form1中运行这段代码:

    private void button1_Click(object sender, EventArgs e)
    {
        string blah = GetWorld;
        MessageBox.Show(blah);
    }
Run Code Online (Sandbox Code Playgroud)

它正确更新.

Zbi*_*iew 5

Form每次调用GetConnectionString方法时都会创建新的,它不会选择,而是采用default(Dev).

这个问题有几种解决方案,您可以将您的选择作为参数传递:

GetConnectionString(string world) {}
// or
GetConnectionString(MyEnum world) {}
Run Code Online (Sandbox Code Playgroud)

然后在你的Form:

string str = GetConnectionString(this.GetWorld);
Run Code Online (Sandbox Code Playgroud)