none
請問有關ComboBox的DataSource問題 RRS feed

  • 問題

  • 當我現在使用ComboxBox的DataSource屬性時,會自動呼叫SelectedValueChanged或SelectedIndexChanged事件,但是我不想要一開始就呼叫SelectedValueChanged或SelectedIndexChanged事件,而是由使用者選擇CombocBox的值之後再去呼叫,請問該怎麼解決]?
    • 已移動 璉璉 2009年3月21日 上午 05:37 (由 Visual Studio一般討論區(General) 移動至 Windows Forms General)
    2009年3月5日 上午 02:14

解答

  • 你不要在DesignTime設定註冊轉換通知.
    你在DataBinding 後再去註冊.
    也就是
    cb.DataSource=new MyList();
    cb.SelectedValueChanged+=.....................

    如果你先前已經有資料,及註冊轉換通知,你可以停掉在開啟.

    cb.SelectedValueChanged-=.....................  //先停掉
    cb.DataSource=new MyList(); //更新來源
    cb.SelectedValueChanged+=.....................//註冊通知.

    • 已提議為解答 Lolota Lee 2009年3月9日 上午 02:23
    • 已標示為解答 Lolota Lee 2009年3月11日 上午 02:30
    2009年3月6日 上午 07:16

所有回覆

  •  那就寫在ComboBox1_Click

    Public Class Form1
        Dim dt As New DataTable
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim dc As New DataColumn

            dc.ColumnName = "id"
            dt.Columns.Add(dc)

            dc = New DataColumn
            dc.ColumnName = "username"
            dt.Columns.Add(dc)

            Dim row As DataRow
            row = dt.NewRow
            row("id") = 1
            row("username") = "kent"
            dt.Rows.Add(row)

            Dim row2 As DataRow
            row2 = dt.NewRow
            row2("id") = 2
            row2("username") = "mary"
            dt.Rows.Add(row2)
        End Sub

        Private Sub ComboBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.Click
            ComboBox1.DataSource = dt
            ComboBox1.DisplayMember = "id"
        End Sub
    End Class

    2009年3月5日 上午 04:34
  • 忘了說明我是使用C#開發smart device上的程式,沒有Click事件可以使用
    2009年3月5日 上午 05:45
  • HI,


    您可以先不要為ComboBox登記SelectedValueChanged或SelectedIndexChanged的事件處理程序, 在設定完ComboBox的DataSource屬性之後再以AddHandler的做法, 為ComboBox登記SelectedValueChanged或SelectedIndexChanged的事件處理程序, 請參考:
    http://msdn.microsoft.com/zh-tw/library/7taxzxka(VS.80).aspx
    2009年3月6日 上午 01:41
  • 你不要在DesignTime設定註冊轉換通知.
    你在DataBinding 後再去註冊.
    也就是
    cb.DataSource=new MyList();
    cb.SelectedValueChanged+=.....................

    如果你先前已經有資料,及註冊轉換通知,你可以停掉在開啟.

    cb.SelectedValueChanged-=.....................  //先停掉
    cb.DataSource=new MyList(); //更新來源
    cb.SelectedValueChanged+=.....................//註冊通知.

    • 已提議為解答 Lolota Lee 2009年3月9日 上午 02:23
    • 已標示為解答 Lolota Lee 2009年3月11日 上午 02:30
    2009年3月6日 上午 07:16
  • 移文至:

    Windows Forms controls,Smart Client技術相關問題。

    T.L. Cheng
    2009年3月21日 上午 05:36