1

ComboBox を含む Windows フォーム アプリケーションがあり、ボックスにいくつかの文字列があります。文字列の 1 つを選択して作成ボタンを押したときに、作成したパネルの別の Windows フォーム アプリケーションにその名前を表示するにはどうすればよいかを知る必要があります。顧客を追加するためのコードは次のとおりです。

public partial class AddOrderForm : Form
{
    private SalesForm parent;

    public AddOrderForm(SalesForm s)
    {
        InitializeComponent();
        parent = s;

        Customer[] allCusts = parent.data.getAllCustomers();

        for (int i = 0; i < allCusts.Length; i++)
        {
            Text = allCusts[i].getName();
            newCustomerDropDown.Items.Add(Text);
            newCustomerDropDown.Text = Text;
            newCustomerDropDown.SelectedIndex = 0;
         }

注文の作成ボタンをクリックすると、上記の情報が他の Windows フォーム アプリケーションでラベル付けされるようになりました。

        private void newOrderButton_Click(object sender, EventArgs e)
        {

            //get the info from the text boxes


            int Index = newCustomerDropDown.SelectedIndex;
            Customer newCustomer = parent.data.getCustomerAtIndex(Index);              


            //make a new order that holds that info
            Order brandSpankingNewOrder = new Order(newCustomer);
            //add the order to the data manager
            parent.data.addOrder(brandSpankingNewOrder);
            //tell daddy to reload his orders
            parent.loadOrders();
            //close myself
            this.Dispose();
        }
4

1 に答える 1

0

コンテキストは私にはあまり明確ではありませんが、正しく理解できれば、SalesFormのインスタンスからAddOrderFormのインスタンスを開き、newOrderButtonをクリックすると、AddOrderFormのデータでSalesFormの何かを更新します。

この場合、それを取得する方法はたくさんありますが、コードへの変更が少なくて済むのはこれです(あまり好きではない場合でも)。

変更する必要のあるコントロールをSalesFormで作成するpublicか、少なくともinternal作成します(コントロールのプロパティの[デザイン]セクションにある[Modifiers]プロパティを確認してください)。これにより、次のように記述できます(customerTxtがSalesFormのTextBoxであると仮定します)。

parent.customerTxt.Text = newCustomerDropDown.SelectedItem.Text;
于 2012-09-27T09:18:07.617 に答える