0

私がやろうとしていること:

  1. フォーム上のバーコードで製品を検索しますForm1
  2. 見つからない場合:
    1。Inventoryフォームを開きます2.名前または説明で製品を検索します
    3.ListView click見つかった製品のBarCodeをコピーして、Form1バーコードテキストボックスに貼り付けます。

それはすべて誠実に行われます。Inventory問題は、フォームから製品を追加するたびに新しい Form1ものが開かれることです。

値は同じForm1で処理されないため、4つの製品を販売するとします。

  • Form1そのうち2つはバーコード検索で追加されます
  • Inventoryそのうち2つは検索フォームから追加されます

最終的に、3つの開いたForm1フォームを取得します。1つは2つの製品で、2つのフォームは1つの製品(フォームを介して追加Inventory)です。それらをすべて1つにする必要があります。

ありがとう

// ------------------------- Form 1 ---------------------- ----------------------

private void btnInventory_Click(object sender, EventArgs e)

    {
        Inventory Inventory = new Inventory();
        Inventory.Show();
    }



 private string _theValue;

    public string TheValue
    {
        get
        {
            return _theValue;
        }
        set
        {
            _theValue = value;
            txtItems.Text = value;

        }
    }

// - - - - - - - - - - - - - - -在庫 - - - - - - - - - ---------------

private void ShowForm1()
    {

        string value = label9.Text;
        Form1 newForm = new Form1();
        newForm.TheValue = value;
        this.Close();
        newForm.ShowDialog();
    }



private void lvList_Click(object sender, EventArgs e)

    {
        label9.Text = lvList.SelectedItems[0].SubItems[0].Text;
        this.ShowForm1();

    }

遅れてすみません、私は再び投稿する前に8時間待たなければなりませんでした

返信ありがとうございます。

そのForm1を試してみました

  private void btnInventory_Click(object sender, EventArgs e)
     {

         Inventory _inv = new Inventory();
         if (DialogResult.OK == _inv.ShowDialog())
             {
                 txtItems.Text = _inv.fugi;
             }

     }

および在庫フォーム

private string test;
        public string fugi
        {
            get { return test; }
            set { test = label9.Text; }
        }



private void lvList_Click(object sender, EventArgs e)
        {

            label9.Text = lvList.SelectedItems[0].SubItems[0].Text;
            this.DialogResult = DialogResult.OK;
            this.Close();


        }

txtItems.Textはインベントリフォームからテストの値を取得しません

4

1 に答える 1

1

で指示したため、新しいダイアログが開きShowForm1ます。個人的には、btnInventoryのクリックを次のように変更します。

private void btnInventory_Click(object sender, EventArgs e)
{
    Inventory _inv = new Inventory();
    if(DialogResult.OK == Inventory.ShowDialog())
    {
          valueIWantToSet = _inv.Accessor;
    }
}

アクセサあなたはあなた自身を似たものにする必要があります

public TypeOfVar Accessor
{
    get{return m_privateVariableThatIWillMakeAndSetToMyBarcode;}
}

編集:バーコードの値を取得したらDialogResult、フォローとして設定する必要があります

 this.DialogResult = DialogResult.OK;

次に、フォームを閉じる前に、バーコードにアクセスする変数を設定します

Edit2:あなたShowForm1はこれに似たものになります(このメソッドの名前を変更したいかもしれません!)

{
this.DialogResult = DialogResult.OK;
m_myVar = SelectedItem..;
this.Close;
}

回答を更新

setプロパティを正しく使用していないため、まだ問題が発生しています。getはそのままで問題ありません。valueセッターに使用する必要があるというキーワードがc#にあります。この値は、=記号の右側にあるものの値を取ります。次のように考えることができます...

fugi = label9.Text

上記の行でfugiは、に設定する必要のある値を取得するために、プロパティゲッターを使用していますlabel9.Text。記号は、この=プロパティにセッターを使用し、の値をに設定することを示しvalueていlabel9.Textます。

getterとsetterのプロパティが使用されるため、基になる変数へのアクセスを必要のない場所に提供する必要がなく、必要に応じてこの変数を設定または取得するオプションを使用できます。

これは、の値をまだ設定していなくても問題が解決しないことを意味しますがtest、それでもデフォルトの文字列値です。したがって、問題を解決する方法はいくつかあります。

最初の方法は、label9.Textのゲッターを提供し、プライベート変数の必要性を取り除くことです。

public string Fugi //Properties should really start with capital letter
{
    get{return label9.Text;}
}

2つ目は、btnInventoryClickでgetterを呼び出し、setterメソッドを削除する前に、testの値を設定することです。

private void lvList_Click(object sender, EventArgs e)
{
   test = label9.Text;

3つ目はtest、方法2に示すように設定しますが、このテスト変数を他の場所に設定できるように、Fugiの設定方法を次のように変更します。

set{text = value;}

于 2013-01-23T08:44:29.750 に答える