none
請問大大, 在 Form Load 事件裡, 自訂 DataGridView 控制項, 為何欄位會自行重複增加? RRS feed

解答

  • 你該不會是用 Form2.瞎米東西 這種方式在傳值吧 ?

    這種方法方便, 但卻不是好習慣. 最近剛寫了一篇, 你可以試著用這種方法做

    老調重彈 -- 再談 Windows Form 程式視窗互相傳值(1)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年12月8日 上午 09:33
    版主

所有回覆

  • 我依照範例實作了一次,並沒模擬出你所說的重複Form Load,根據MSDN所述Form Load事件是發生在第一次顯示表單之前,還是說你有加了什麼CODE去呼叫Form Load的事件函式?

    http://msdn.microsoft.com/zh-tw/library/system.windows.forms.form.load(v=VS.90).aspx


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年12月7日 下午 10:28
  • 為什麼會出現重覆Form_Load這種事 ?
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年12月8日 上午 04:17
    版主
  • 不好意思, 應該說明詳細一點.

    主表單(Form1)上有兩個按鈕, 一個是退出, 另一個是 開啟 "MSDN 範例的表單(Form2)", 如下:

    開啟 按鈕的 Click 事件內為 Form2.ShowDialog()

    步驟:

    1. 由 Form1 點擊 開啟 按鈕.

    1. 第一次 載入 Form2 表單時, 一切正常.

    2. 點擊 Form2 上的關閉按鈕 (Me.Close()), 關閉 Form2.

    3. 再次點擊 Form1 上的 開啟 按鈕, 開啟 Form2 表單.

    4. 此時, 範例表單 (Form2) 會增長為四個欄位.

     

    如上所述, 感謝解惑!

     

     

    2011年12月8日 上午 08:40
  • 用比較正常的方法好了:

    把 Form2.ShowDialog() 改成

    Dim popForm as New Form2

    popForm.ShowDialog()

     

    這是因為你直接用Form2.ShowDialog() , 就算你Close()了, 它的東西還是會被記住. (它這做法有點類似單例)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年12月8日 上午 08:49
    版主
  • 但是,  用 new form 的方式

    會造成 跨表單 傳值不正確耶!

    2011年12月8日 上午 09:31
  • 你該不會是用 Form2.瞎米東西 這種方式在傳值吧 ?

    這種方法方便, 但卻不是好習慣. 最近剛寫了一篇, 你可以試著用這種方法做

    老調重彈 -- 再談 Windows Form 程式視窗互相傳值(1)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年12月8日 上午 09:33
    版主
  • 謝謝回覆.

    我的確是用這種方法在傳值耶!

    我之前都在研究 ASP.NET, 這 Windows Form 程式 是我的第二支程式.

    所以有些不甚熟悉.

    關於 Bill 大大 提的方式, 我先試試看, 謝謝!

    2011年12月8日 下午 03:09
  • Form2.Show() 這件事在.NET上只有 Visual Basic 2005,2008,2010的版本支援 (這是有個歷史原因), 但卻不是標準的做法.
    如果你是寫C#, 根本不會讓你直接Form2.Show().

    當你在製作一個Form2的時候, 其實你在設計的是一個繼承自Form類別的類別, 名叫Form2, 只是這幾個版本的VB會依據狀況偷偷幫你產生實體.

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年12月8日 下午 04:42
    版主
  • 可是, 用 新增一個表單的方式 (透過 Visual Studio 方案總管 加入新項目),

    它不是實體嗎?

    2011年12月9日 上午 02:01
  • 當然不是實體, 只是個類別, 你沒看到最上方寫的是Public Class Form2 嗎 ? 之所以會有Form2實體是VB 自動偷做的
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年12月9日 上午 04:02
    版主
  • 我一直以為, 就像 控制項 拉到 表單上, 就是一個實體了 (這句話 沒錯吧!?)

    恍然大悟!
    2011年12月9日 上午 09:59
  • 如果你是拉一個控置項到Form Class, 那表示是在 Form Class中產生此控制項的實體.

    對於這個設計時期的動作, 你可以參考以下這篇

    Windows Form Designer


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年12月9日 下午 02:21
    版主