CSV と XML の間、および XML から TXT への変換を処理する小さなプログラムを作成しています。メイン フォームには、目的の変換を開始するためにユーザーがクリックする 2 つのラジオ ボタンを挿入しました。
これまでのところ、.cs ファイルが必要です: MainForm.cs と ConversionForm.cs。
MainForm.cs では、ConversionForm がそのメソッドにアクセスできるように、MainForm を static として宣言しました。
public MainForm()
{
InitializeComponent();
}
public static MainForm mform = null;
...次に、変更をチェックするイベント ハンドラーの関数を挿入しました。
public void CSVConversionRadio_CheckedChanged(object sender, EventArgs e)
{
this.CSVConversionRadio.Checked = true;
}
public void TXTConversionRadio_CheckedChanged(object sender, EventArgs e)
{
this.TXTConversionRadio.Checked = true;
}
...
ConversionForm には、ユーザーの入力選択に基づいて変換を処理する「変換」ボタンがあります。
public void conversionButton_Click(object sender, EventArgs e)
{
if (MainForm.mform.CSVConversionRadio.Checked = true)
{
CSVConversion();
}
if (MainForm.mform.TXTConversionRadio.Checked = true)
{
TXTConversion();
}
}
私が直面している問題は、関数がラジオ ボタンの状態をチェックするときに、プログラムが「null」を返し、例外をスローすることです。コードに何らかの変更を加える前、つまり静的関数を宣言する前に
public static MainForm mform = null;
MainForm.mform.CSVConversionRadio.Checked は常に "false" のステータスを返していました。おそらく、新しいフォーム (Conversion) がインスタンス化され、イベント ハンドラーがその状態をデフォルトにリセットしたためです。
だから、ここに私の質問があります:
ラジオ ボタンの現在の値を変換フォームに渡し、ユーザーの選択に従って変換関数を実行できるようにするにはどうすればよいですか?
一般に、新しいインスタンスを作成せずに、別のフォームからプロパティ、メソッド、およびフィールドを参照するにはどうすればよいですか?