0

こんにちは、Windows フォームを作成しました。目標は飛行機の座席を予約することですが、今では選択したパスが非常に苦痛であることがわかりました.乗客がボタンを押してグラフィカルに座席を選択すると、ボタンの色が変更されますが、コードを追加する必要があります.この情報を保存して乗客と関連付けるのに役立ちます。よろしく

private void button4_Click(object sender, EventArgs e)
{
    this.F16.BackColor = Color.LightBlue;
    this.F16.ForeColor = Color.Red;
}  
4

1 に答える 1

1

私が正しく理解している場合は、乗客に関するすべての情報と彼が選択した場所を保持する新しいクラス Passenger を作成するだけです

public class Passenger
{
    public string Name { get; set; }
    public string place { get; set; } // or list of places

    public Passenger(String name)
    {
        this.Name = name;
    }

    public void savePlace(string newPlace)
    {
        this.place = newPlace;
    }

}

次に、フォームで変数を作成します

private Passenger currentPassenger;

そして、関数内で選択した場所を保存します

private void button4_Click(object sender, EventArgs e)
{
    this.currentPassenge.SavePlace(this.F16.name)//or just "F16"
    this.F16.BackColor = Color.LightBlue;
    this.F16.ForeColor = Color.Red;
}  

すべての場所に独自のボタンがある場合は、場所のデータを .Tag プロパティに割り当てることをお勧めします

this.button4.Tag = "F16"

その場合、すべてのボタンに対して 1 つのハンドラーのみが必要です。

    private void PlaceButtons_Click(object sender, EventArgs e)
    {
        Button btn = (Button)sender;
        this.currentPassenger.savePlace((string)btn.Tag);
        this.F16.BackColor = Color.LightBlue;
        this.F16.ForeColor = Color.Red;
    }

もちろん、フォームのコンストラクターで、すべての場所のボタンにイベントハンドラーを追加します

this.button1.Click +=new EventHandler(PlaceButtons_Click);
this.button2.Click +=new EventHandler(PlaceButtons_Click);
this.button4.Click +=new EventHandler(PlaceButtons_Click);

または、他の方法で場所を乗客に関連付ける場合は、 Place クラスを作成します

public class Place
{
    public string Code{ get; set; }//code of place "F16"
    public string passenger { get; set; } //Name of passenger

    public Place(String passengerName)
    {
        this.passenger = passengerName;
    }

    public void SavePassenger(string newpassenger)
    {
        this.passenger = newpassenger;
    }

}

そして、イベント ハンドラ PlaceButtons_Click で同じことを行いますが、乗客名を Place クラスに保存します。アプリケーションの使用に応じて、場所のリストまたはハッシュテーブル (Place; Passenger) またはその他のものをフォームで作成します。

于 2012-11-29T17:11:27.417 に答える