2

Form1でクラスを次のように定義しました

    public class Conditions
    {
        public string name { get; set; }
        public int probability { get; set; }
        public DateTime start_time { get; set; }
        public DateTime end_time { get; set; }
        public int age_min { get; set; }
        public int age_max { get; set; }
        public bool meldpeld { get; set; }
        public bool onea { get; set; }
        public bool oneb { get; set; }
        public int gender { get; set; }  // 0 - both, 1 - male, 2 - female
        public int meld_min { get; set; }
        public int meld_max { get; set; }

    }

そして私は次のような新しいリストを作成しています

    List<Conditions> newconditions = new List<Conditions>();

次に、Form2を

        Conditions newconds = new Conditions();
        Form2 form2 = new Form2(newconds);
        form2.Show();
        form2.TopMost = true;

Form2では、

    public Form2(Form1.Conditions newcond)
    {
        InitializeComponent();
        comboBox1.SelectedIndex = 2;
    }

そこにあるnewcondにセットのものを使うことができます

しかし、私がやりたいのは、Form2の別の関数に設定されていることです。

    private void button2_Click(object sender, EventArgs e)

そして、その関数でnewcondを使用する方法がわかりません。明らかな何かが欠けているに違いありませんよね?

また、これは良い方法ですか?基本的に私がやりたいのは、ユーザーに任意の数の条件(追加、編集、削除が可能)を定義させ、プログラムの実行時にそれらの条件を使用させることです。

ありがとう

4

2 に答える 2

5

You're on the right track sort of.

Basically, I would move your Conditions class into it's own file called Conditions.cs - this is best practice.

Then define a member variable in your class file for Form2. Then in your Constructor for Form2 set that member variable.

private Conditions _conditions;
public Form2(Conditions cond)
{
    _conditions = cond;
    InitializeComponent();
    comboBox1.SelectedIndex = 2;
}

then you can use that in your click method:

protected void button2_click(object sender, EventArgs args)
{
    //Do things with _conditions
}
于 2012-07-23T15:32:12.037 に答える
1

あなたはそこへの道のほとんどです。オブジェクトを格納できるインスタンスフィールド(または場合によってはプロパティ)を作成する必要がありConditionsます。コンストラクターで、パラメーターに基づいてそのフィールドを設定し、イベントハンドラーで使用します。

于 2012-07-23T15:30:36.777 に答える