none
C# 兩個視窗傳遞資料 RRS feed

  • 問題

  • hi all,

    說明如下

    在form2  呼叫 form1(f1) 方法

    form2 代碼如下, 有個button 

    private void button7_Click(object sender, EventArgs e)
      {
          
          f1.button5_Click_CB("ABCD");
    
      }

    form1 代碼如下,處理form2的

    public void button5_Click_CB(string inAAA)
    

    {

    comboBox1.Text = inAAA;

    comboBox1.Items.Add(comboBox1.Text);
    

    }

    可是我在我的視窗from2 卻看不到 inAAA這個字串(下拉combox1),去查看comboBox1裡面內容是存在的

    如果我直接在combox1輸入資料,利用.Add()之後,在同樣的下拉選單中卻有,

    請問為什麼啊? 

    感恩


    補充:

    程序都可以正常運作,只是在form2 combobox1 不會有這個從form來的選項


    • 已編輯 vince.yang 2017年2月21日 下午 02:14 補充
    2017年2月21日 下午 01:54

解答

所有回覆

  • 您可以確認f1是否為目前顯示的Form1的變數, 而不是另外建立的Form1變數
    • 已標示為解答 vince.yang 2017年2月22日 下午 12:07
    2017年2月22日 上午 01:51
  • Hi vince.yang,

    因為combobox是一個list,他存放的是物件,不一定只是一個string,

    如果您是用comboBox1.Text = inAAA; 這一行的話,

    他只是改變了combobox介面上顯示的值,

    並不會加到list裡面,

    所以才要用 comboBox1.Items.Add(inAAA); 這一行,

    把資料加入到combox1 list裡,

    建議可以參考 How add a item to combobox

    希望能幫助到您:)




    請記得將對您有幫助的回覆"標示為解答"以幫助其他尋找解答及參與社群討論的朋友們。

     

    Please remember to click Mark as Answer on the post that helps you.
    This can be beneficial to other community members reading the thread.

    2017年2月22日 上午 02:37
  • hi ,

    誠如你所言,

    public void button5_Click_CB(string inAAA)
    

    {

    comboBox1.Text = inAAA;

    comboBox1.Items.Add(comboBox1.Text);
    

    }

    這個按鈕裡面有利用 .Add將我的 字串寫入。

    在原來的form1中,已經有個click event了,第一行就是 .Add, 在這個事件運行下,利用視窗查看(下拉combobox)

    就可以看到剛剛輸入的 comboBox1.Text的這個item, 但是利用上面的方法卻不行。

    private void button5_Click(object sender, EventArgs e)

    {

    comboBox1.Items.Add(comboBox1.Text);
    

    }

    兩者的差別在於 一個從視窗輸入來,一個是被呼叫傳進來的

    2017年2月22日 上午 11:58
  • Form f1 = new Form1().

    可能是這個原因

    繼續查找中。

    2017年2月22日 下午 12:01
  • 您可以確認f1是否為目前顯示的Form1的變數, 而不是另外建立的Form1變數

    看樣子是我引用了兩個form錯誤了。 收到啦

    2017年2月22日 下午 12:07
  • Hi vince.yang,

    提供更改好的程式碼給您參考一下:

    Form2:

    private void button1_Click(object sender, EventArgs e)
            {
                Form1 f1 = new Form1();  
                
                f1.button_Click_CB("ABCD");
                f1.Show();
            }

    Form1: (如果您要傳遞 form2 裡的值)

     public void button_Click_CB(string inAAA)
            {
                comboBox1.Items.Add( inAAA );
            }
    希望能幫助到您:)


    請記得將對您有幫助的回覆"標示為解答"以幫助其他尋找解答及參與社群討論的朋友們。

     

    Please remember to click Mark as Answer on the post that helps you.
    This can be beneficial to other community members reading the thread.

    2017年2月23日 上午 08:04