none
c# 如何在程式 initial 時不進入 事件 內 RRS feed

  • 問題

  • 程式 初始化時 會先 執行

    ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();

    再 執行

    ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();

    在 endinit 後 就會進入 datagridview1 的 RowsAdded 內

    如何 不讓其 進入 或是 如何判斷 是在此時 進入呢?

    避免 此時執行 RowsAdded 內的程式

    謝謝。

    2011年3月2日 上午 08:46

解答

  • 可以考慮在Form的Load事件處理程序中設定DataGridView控制項的DataSource屬性, 不要在屬性視窗中設定

    2011年3月2日 下午 12:52
  • 像這類問題, 你可以反向思考一下, 既然它一定會掉進 RowsAdded 事件處理函式裡, 那麼你可以很簡單的設定一個期標, 預設值為 true, 如果在 RowsAdded 事件處理函式中檢查出它是 true, 就把這個期標設定成 false。如果檢查到它是 false, 就表示它一定是第N次 (N>1) 掉進來了。

    當然你不能把這個期標放在 RowsAdded 事件處理函式裡宣告成 local 變數, 不然怎麼設定它的值也沒有用; 我想這就不用多作解釋了吧?

     


    ASP.NET 2Share - http://www.dotblogs.com.tw/johnny 
    2011年3月6日 上午 07:10
  • Hi,

    我的話也是用動態繫上事件處理函式的作法~在加完資料後再將事件繫上就可以了

    		private void Form1_Load(object sender, EventArgs e)
    		{
    			dataGridView1.Rows.Add();
    			dataGridView1.RowsAdded += new DataGridViewRowsAddedEventHandler(dataGridView1_RowsAdded);
    		}
    
    		private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
    		{
    			this.Text = "RowAdded";
    		}
    


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2011年3月7日 上午 02:24

所有回覆

  • 可以考慮在Form的Load事件處理程序中設定DataGridView控制項的DataSource屬性, 不要在屬性視窗中設定

    2011年3月2日 下午 12:52
  • You can add event handler in runtime.

    http://support.microsoft.com/kb/815780


    大家一齊探討、學習和研究,謝謝!
    Microsoft MVP, Microsoft Community Star(TW & HK), MCT,
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD
    2011年3月3日 上午 05:59
  • 像這類問題, 你可以反向思考一下, 既然它一定會掉進 RowsAdded 事件處理函式裡, 那麼你可以很簡單的設定一個期標, 預設值為 true, 如果在 RowsAdded 事件處理函式中檢查出它是 true, 就把這個期標設定成 false。如果檢查到它是 false, 就表示它一定是第N次 (N>1) 掉進來了。

    當然你不能把這個期標放在 RowsAdded 事件處理函式裡宣告成 local 變數, 不然怎麼設定它的值也沒有用; 我想這就不用多作解釋了吧?

     


    ASP.NET 2Share - http://www.dotblogs.com.tw/johnny 
    2011年3月6日 上午 07:10
  • Hi,

    我的話也是用動態繫上事件處理函式的作法~在加完資料後再將事件繫上就可以了

    		private void Form1_Load(object sender, EventArgs e)
    		{
    			dataGridView1.Rows.Add();
    			dataGridView1.RowsAdded += new DataGridViewRowsAddedEventHandler(dataGridView1_RowsAdded);
    		}
    
    		private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
    		{
    			this.Text = "RowAdded";
    		}
    


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2011年3月7日 上午 02:24