2013年7月30日 星期二

[除錯] TabControl 內的控制項 與 資料繫結 DataBindings, 卻檢查出空白值!

原因:
1.



控制項(TextBox、ComboBox, etc...) 在TabControl時, 且有資料繫結DataBinding(確實有值)
當儲存(檢查控制項是否空白)時, 卻會檢查出此控制項為空白!

2.
tabPage1有DataGridView綁定 bindingsource
當tabPage2為顯示頁時,此時執行 bindingsource.CancelEdit()
則會引發錯誤:
System.ArgumentOutOfRangeException 未處理
  Message=提供的資料列索引超出範圍。
參數名稱: rowIndex
  Source=System.Windows.Forms
  ParamName=rowIndex
  StackTrace:
       於 System.Windows.Forms.DataGridViewRowCollection.GetRowState(Int32 rowIndex)


解決:how to force all controls on all tab pages of a tab control to load/createhandle at once?
1.
//讓不同的tabPage的Control可以load DataBinding資料
foreach (var v in tabControl1.Controls.OfType<TabPage>())
     v.Show();

2.
執行程式時, 需每個TABPAGE都(手動)點過!

3.
        TabPage1.Show()
        TabPage2.Show()
        TabPage3.Show()
        TabPage4.Show()

4.
dgvM.DataSource = null;
bdNavi.BindingSource.RemoveCurrent();(或 bdNavi.BindingSource.CancelEdit();)  <--- 出錯點
bdNavi.BindingSource.ResetBindings(false);
dgvM.DataSource = bs;

沒有留言:

張貼留言