日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

      首頁(yè)編程開發(fā)C#.NET → c# 中多個(gè)RadioButton與DataTable的數(shù)據(jù)綁定出現(xiàn)問題的解決方案

      c# 中多個(gè)RadioButton與DataTable的數(shù)據(jù)綁定出現(xiàn)問題的解決方案

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:西西整理時(shí)間:2012/11/22 17:29:22字體大小:A-A+

      作者:西西點(diǎn)擊:0次評(píng)論:0次標(biāo)簽: DataTable

      • 類型:SIM 模擬經(jīng)營(yíng)游戲大。32.5M語言:中文 評(píng)分:7.2
      • 標(biāo)簽:
      立即下載

      Control類有一個(gè)公共的屬性是DataBindings,它可以將控件的屬性與其他的數(shù)據(jù)綁定在一起。我接觸到的有將兩個(gè)控件的數(shù)據(jù)綁定、將控件的屬性與DataTable綁定。以下說說在將DataTable與RadioButton綁定的過程中出現(xiàn)的問題。

      界面上有兩個(gè)RadioButton,rdoA和rdoB,以及一個(gè)顯示dt數(shù)據(jù)的Button;后臺(tái)定義一個(gè)私有變量DataTable dt。界面初始化完成后,將rdo與dt的值綁定起來。

      DataTable dt = null;
      public DataBinding2()
      {
          InitializeComponent();
          dt = new DataTable();
          dt.Columns.Add("A", typeof(bool));
          dt.Columns.Add("B", typeof(bool));
          dt.Rows.Add(rdoA.Checked, rdoB.Checked);

          rdoA.DataBindings.Add("Checked", dt, "A");
          rdoB.DataBindings.Add("Checked", dt, "B");
          btnDTValue.Click += (a, b) =>
              MessageBox.Show(string.Format("A: {0}\r\nB: {1}", dt.Rows[0]["A"], dt.Rows[0]["B"]));
      }

      到這里,完成思路需要的代碼似乎敲完了,進(jìn)入調(diào)試,看看結(jié)果。

      沒有點(diǎn)擊任何RadioButton之前,查看dt的數(shù)據(jù)是正確的。

      點(diǎn)擊rdoA之后,再次查看dt的數(shù)據(jù)。

      出現(xiàn)錯(cuò)誤了。點(diǎn)擊rdoA之后,rdoA的checked狀態(tài)為true,這點(diǎn)沒錯(cuò),但是rdoA的狀態(tài)會(huì)變成false,為什么綁定的dt里面B的值仍然是true呢??

      我們可以仔細(xì)的研究Control.DataBindings.Add這個(gè)方法。

      它有好幾個(gè)擴(kuò)展的方法,上面的示例中調(diào)用的是

      public Binding Add(string propertyName, object dataSource, string dataMember)

      查看它后臺(tái)實(shí)際執(zhí)行的是什么函數(shù)呢?

      public Binding Add(string propertyName, object dataSource, string dataMember)
      {
      return this.Add(propertyName, dataSource, dataMember, false, this.DefaultDataSourceUpdateMode,
      null, string.Empty, null);

      繼續(xù)追查this.DefaultDataSourceUpdateMode的選項(xiàng)。在微軟的官方說明文字中可以看到這樣一段

      "DefaultDataSourceUpdateMode property is used in cases where a Binding without a DataSourceUpdateMode specified is added to the collection." data-guid="cd93d869019af3b363e4b864ab4b003f">在未指定 DataSourceUpdateMode 的 Binding 添加到集合中的情況下,將使用 DefaultDataSourceUpdateMode 屬性。OnValidation" data-guid="db894ff4a6d833790928f507ee35a1de">對(duì)于 Windows 窗體控件,此默認(rèn)值是 OnValidation"。

      接下來的問題是,點(diǎn)擊rdoA之后,是否會(huì)執(zhí)行rdoB控件的OnValidation函數(shù)呢?于是在另一個(gè)項(xiàng)目里做了測(cè)試,(詳細(xì)的測(cè)試方法可以看這里)兩個(gè)radioButton,初始時(shí),rdoA為true,rdoB為false。點(diǎn)擊rdoB,會(huì)發(fā)現(xiàn)執(zhí)行的事件包括:

      1, rdoA, 事件:CheckedChanged
      2, rdoB, 事件:CheckedChanged
      3, rdoB, 事件:Validating
      4, rdoB, 事件:Validated

      由上面的結(jié)果可以看出,rdoA的驗(yàn)證事件并不會(huì)觸發(fā)。也就是說rdoA此刻的Checked值并不會(huì)綁定到dt里面。

      問題出在這里。找到問題之后修改起來就非常簡(jiǎn)單了。Add調(diào)用另一個(gè)重載的方法,輸入DataSourceUpdateMode。

      rdoA.DataBindings.Add("Checked", dt, "A", false, DataSourceUpdateMode.OnPropertyChanged);
      rdoB.DataBindings.Add("Checked", dt, "B", false, DataSourceUpdateMode.OnPropertyChanged);

        農(nóng)場(chǎng)類游戲
        (13)農(nóng)場(chǎng)類游戲
        農(nóng)場(chǎng)類游戲多是以農(nóng)場(chǎng)為背景的模擬經(jīng)營(yíng)類游戲。游戲中,玩家扮演一個(gè)農(nóng)場(chǎng)的經(jīng)營(yíng)者,完成從購(gòu)買種子到耕種澆水施肥噴農(nóng)藥收獲果實(shí)再到出售給市場(chǎng)的整個(gè)過程。游戲趣味性的模擬了作物的成長(zhǎng)過程,所以玩家在經(jīng)營(yíng)農(nóng)場(chǎng)的同時(shí),也可以感受作物養(yǎng)成帶來的樂趣。游戲中,玩家可以對(duì)自己的作物實(shí)施的大部分動(dòng)作,都同樣可以對(duì)好友的作物實(shí)施,所以在游戲中,玩家既可以成為一名樂善好施的大好人,也可以成為一名專搞破壞掠奪的大惡人,十分...更多>>

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評(píng)論

        最新評(píng)論

        發(fā)表評(píng)論 查看所有評(píng)論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)