none
點擊listbox最後一個項目然後把他刪除 在點擊listbox的其中一筆資料此時comboBox顯示有問題 RRS feed

  • 問題

  • 因為  帳戶驗證之前,內文不能包含影像或連結,所以寫在部落格

    http://f23939889.pixnet.net/blog/post/241822615

    問題描述:

    點擊listbox最後一個項目然後把他刪除
    在點擊listbox的其中一筆資料
    此時comboBox會顯示WindowsFormsApplication1.Form1+Menu
    但我希望它是顯示 (測試6) 的文字
    操作方式:
    點擊listbox最後一個項目欄後把他刪除(先不開訊息)

    按完刪除後
    在點擊listbox的其中一筆資料
    此時comboBox會顯示WindowsFormsApplication1.Form1+Menu
    但我希望它是顯示 (測試6) 的文字

    但如果再點擊一次listbox的其中一筆資料
    comboBox就會顯示正常不知道是什麼原因?





    • 已編輯 jiesenhu 2018年9月26日 上午 04:39
    2018年9月26日 上午 03:46

解答

  • private void button1_Click(object sender, EventArgs e)//刪除扭
            {
                newmenu.RemoveAt(listBox1.SelectedIndex);
                uplistBox();
                upcomboBox();
            }
    
            private void listBox1_MouseClick(object sender, MouseEventArgs e)
            {          
                comboBox1.SelectedIndex = listBox1.SelectedIndex;
                uplistBox();
                upcomboBox();
            }

    你改成這樣試試看 感覺是 Databind 之後 沒有重新給 DisplayMember 導致

    或是 IndexFromPoint 用這個東西去指定 目前被選定的項目 導致

    • 已編輯 Coding Kid Peter Chang 2018年9月26日 上午 08:37
    • 已標示為解答 jiesenhu 2018年9月26日 下午 02:05
    • 已取消標示為解答 jiesenhu 2018年9月27日 上午 12:57
    • 已標示為解答 jiesenhu 2018年9月27日 上午 05:50
    2018年9月26日 上午 08:34

所有回覆

  • private void button1_Click(object sender, EventArgs e)//刪除扭
            {
                newmenu.RemoveAt(listBox1.SelectedIndex);
                uplistBox();
                upcomboBox();
            }
    
            private void listBox1_MouseClick(object sender, MouseEventArgs e)
            {          
                comboBox1.SelectedIndex = listBox1.SelectedIndex;
                uplistBox();
                upcomboBox();
            }

    你改成這樣試試看 感覺是 Databind 之後 沒有重新給 DisplayMember 導致

    或是 IndexFromPoint 用這個東西去指定 目前被選定的項目 導致

    • 已編輯 Coding Kid Peter Chang 2018年9月26日 上午 08:37
    • 已標示為解答 jiesenhu 2018年9月26日 下午 02:05
    • 已取消標示為解答 jiesenhu 2018年9月27日 上午 12:57
    • 已標示為解答 jiesenhu 2018年9月27日 上午 05:50
    2018年9月26日 上午 08:34
  • private void button1_Click(object sender, EventArgs e)//刪除扭
            {
                newmenu.RemoveAt(listBox1.SelectedIndex);
                uplistBox();
                upcomboBox();
            }
    
            private void listBox1_MouseClick(object sender, MouseEventArgs e)
            {          
                comboBox1.SelectedIndex = listBox1.SelectedIndex;
                uplistBox();
                upcomboBox();
            }

    你改成這樣試試看 感覺是 Databind 之後 沒有重新給 DisplayMember 導致

    或是 IndexFromPoint 用這個東西去指定 目前被選定的項目 導致

    請問一下後來研究一下發現

    comboBox1.DisplayMember = "bentoName";

    comboBox1.SelectedIndex = listBox1.SelectedIndex;

    這樣寫不行,要下面的寫法才行

    comboBox1.SelectedIndex = listBox1.SelectedIndex;

    comboBox1.DisplayMember = "bentoName";

    雖然知道解法但不理解原因,不知道有用到哪些觀念,希望高手指點一下為何一定要先設定

    comboBox1.SelectedIndex = listBox1.SelectedIndex;

    在設定

    comboBox1.DisplayMember = "bentoName";

    這樣才行呢?

     

    • 已編輯 jiesenhu 2018年9月27日 上午 02:02
    2018年9月27日 上午 01:15
  • 改成這樣試看看:

    private void button1_Click(object sender, EventArgs e)//刪除扭
            {
                newmenu.RemoveAt(listBox1.SelectedIndex);
                uplistBox();           
            }
    
            private void listBox1_MouseClick(object sender, MouseEventArgs e)
            {
                comboBox1.Text = listBox1.Text;
            }

    2018年9月27日 上午 02:36