メインウィンドウが1つあるシンプルな.netアプリがあります。データを処理する前に確認したいラジオボタンがいくつかあります。2セットのCSファイルがあります。Form1.cs(メインウィンドウコード)およびdatabase.CS(実際にDBクエリを実行するコード)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";
}
}
}
そして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;
}
}
私が抱えている問題は、どのラジオボタンをチェックしても、常に最上位の開発オプションが選択されることです。
いくつかの回避策を設定できますが(ラジオボタンをdatabase.CSへの呼び出しの一部として渡すようにします)、これが正しく機能しない理由がわかりません。私には、メソッドGetConnectionString()は基本的に、アプリの起動時にフォームデータを取得しており、実際に検索することはないようです。
Form1内でこのコードを実行する場合:
private void button1_Click(object sender, EventArgs e)
{
string blah = GetWorld;
MessageBox.Show(blah);
}
正しく更新されます。