0

私のプロジェクトには2つのwinformがあります。Form1 の [設定] ボタンをクリックすると、[設定] フォームが表示されます。テキスト ボックスに変更を加えています。2 番目のフォームの [保存] ボタンをクリックすると、これらの値がテキスト ファイルに保存され、これらの値を渡したいと思います。最初のフォームに、しかし、私はそれらを渡すことができませんでした.

これが私のコードの一部です。

このコードは設定ボタンのクリックです(Form1上)

private void button3_Click(object sender, EventArgs e)
{
    Settings frm = new Settings();
    frm.Show();  
}

public void funData(TextBox txtForm1)
{
    label3.Text = txtForm1.Text;
}

このコードは、[保存] ボタンのクリック (2 番目のフォーム) です。

private void button5_Click(object sender, EventArgs e)
{
    if (File.Exists(ConfigFile))
    {
        File.Delete(ConfigFile);
        using (StreamWriter writer = new StreamWriter(ConfigFile))
        {
          writer.WriteLine(txtTemsPath.Text);
          writer.WriteLine(txtVodafonePath.Text);
          writer.WriteLine(txtTurkcellPath.Text);
          writer.WriteLine(txtAveaPath.Text);
          writer.Close();
        }
    }
    else
    {
       using (StreamWriter writer = new StreamWriter(ConfigFile))
        {
            writer.WriteLine(txtTemsPath.Text);
            writer.WriteLine(txtVodafonePath.Text);
            writer.WriteLine(txtTurkcellPath.Text);
            writer.WriteLine(txtAveaPath.Text);
            writer.Close();
        }
    }
    Form1 frm = new Form1();
    delPassData del = new delPassData(frm.funData);
    del(this.txtTemsPath);
    frm.getSettings();
    frm.TemsPath = TemsPath;
    frm.Activate();
    frm.Refresh();
    this.Close();
}

この問題について教えてください。

ありがとう

4

3 に答える 3

0

最初のフォームで定義します。

 Settings obj = (Settings)Application.OpenForms["Settings"];

private void button3_Click(object sender, EventArgs e)
    {
        Settings obj = new Settings();
        obj.Show();  
    }

frmそして、コードの他の場所を次のように置き換えますobj

問題は、毎回別のフォームの現在のインスタンスを参照する必要があり、新しいフォームを開く必要がないことです。

于 2013-10-10T13:26:58.370 に答える
0

「TemsPath」値を返すプロパティを設定に追加します。次に、Close() の代わりに、DialogResult を OK に設定します。

public partial class Settings : Form
{

    public string TemsPath
    {
        get { return txtTemsPath.Text; }
    }

    private void button5_Click(object sender, EventArgs e)
    {

        // ... your save code ...

        this.DialogResult = System.Windows.Forms.DialogResult.OK;
    }

}

ここで、Form1 に戻り、Show() の代わりに ShowDialog() を使用し、返されたときにプロパティにアクセスします。

public partial class Form1 : Form
{

    private void button3_Click(object sender, EventArgs e)
    {
        Settings frm = new Settings();
        if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            label3.Text = frm.TemsPath;
        }
    }

}
于 2013-10-10T14:41:51.827 に答える