none
加入一個空的程式碼檔 RRS feed

  • 問題

  • 想請問一下各位,創建新專案的時候會有一個預設的Form1 讓我們使用一些功能做程式撰寫

    目前有找到一個加入程式碼檔的功能,


    如果說我現在想把一些在功能分開到不同的.vb下去撰寫,

    讓Form1物件的功能寫在新的.vb程式碼檔中,以及讓Form1.vb可以使用新建立.vb檔案中所設立的副程式


    2017年1月6日 上午 03:39

解答

  • 一般用 Partial 的情境是因為希望把 "畫面設計的部分" 和 "操作畫面的邏輯部分" 分開。(還有一種是兩邊根本是用不同的玩意在寫的,比方 ASP.NET Web Form , WPF ...)

    比如說在 Windows  Forms 專案的預設範本會將一個 Form1 Class 分別放在 Form1.Designer.cs 和 Form1.cs 兩個檔案,可是當你編譯的時候,這兩個檔案會組合起來。

    當你隨便用 Partial Class 就會發生一個問題,你可能會開無限多個 Partial Class,然後把所有的程式碼到處亂塞。

    於是一個 Class 就變得非常大,當它大到一定程度,就會發生幾件事情:

    (1) 你的 Class 變成了個怪物,無所不包,完全喪失明確的意圖、清晰的理解性、職責超級混亂。這樣的類別,可維護性會變得很差,除非你的目的是要整死以後接手維護的人。

    (2) 當同一個 Class 的程式碼分散在過多的類別檔案們要被編譯時 ,通常第一次會正常,過個幾次後可能就會發生記憶體不足的現象,因為編譯器被撐爆了,然後你就得不斷地關掉 Visual Studio ,然後重新開啟。


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


    2017年1月9日 上午 12:29
    版主
  • 您好,

    您可以試一下 Partial Class

    https://msdn.microsoft.com/zh-tw/library/yfzd5350.aspx


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2017年1月6日 上午 03:55
  • 如果與控制項或UI上無關的邏輯程式碼,抽離至其他 Class 也行。

    理直氣和,切記。

    個人

    2017年1月6日 上午 04:01
  • 您可以使用滑鼠右鍵點選專案名稱, 執行[加入| 新增項目]功能, 如下圖, 然後選擇加入類別或模組, 再把功能寫在類別或模組中即可:

    2017年1月6日 上午 06:00
  • Partial Class 不要亂用

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

    2017年1月6日 下午 02:37
    版主
  • 你如果連 Shared 都是第一次知道, 那表示還欠缺很多基礎知識。因為你分不清楚執行個體成員和靜態成員。要寫好的程式,基本觀念很重要,一直盲寫而不注重基礎的結果通常就是造就 "會動,但難以維護,缺乏彈性" 的程式碼。

    建議你把以下的 MSDN 文件內容先看一看
    程式結構和程式碼慣例 (Visual Basic)

    Visual Basic 中的物件導向程式設計

    至於你那個改變 Form1 Button 的問題,可以參考
    老調重彈 -- 再談 Windows Form 程式視窗互相傳值(1)
    老調重彈 -- 再談 Windows Form 程式視窗互相傳值(2)


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



    2017年1月11日 上午 03:46
    版主
  • 目前暫時解決了 謝謝版主關心
    • 已標示為解答 FangDi 2017年2月6日 上午 01:28
    2017年2月6日 上午 01:27

所有回覆

  • 您好,

    您可以試一下 Partial Class

    https://msdn.microsoft.com/zh-tw/library/yfzd5350.aspx


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2017年1月6日 上午 03:55
  • 如果與控制項或UI上無關的邏輯程式碼,抽離至其他 Class 也行。

    理直氣和,切記。

    個人

    2017年1月6日 上午 04:01
  • 好的~這部分我在看一下
    2017年1月6日 上午 04:34
  • 那有沒有參考寫法可以參考呢?
    2017年1月6日 上午 04:34
  • 類別 (C# 程式設計手冊)

    理直氣和,切記。

    個人

    2017年1月6日 上午 05:13
  • 您可以使用滑鼠右鍵點選專案名稱, 執行[加入| 新增項目]功能, 如下圖, 然後選擇加入類別或模組, 再把功能寫在類別或模組中即可:

    2017年1月6日 上午 06:00
  • Partial Class 不要亂用

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

    2017年1月6日 下午 02:37
    版主
  • 可以請問一下使用Partial會有什麼樣的問題嗎?
    2017年1月9日 上午 12:14
  • 一般用 Partial 的情境是因為希望把 "畫面設計的部分" 和 "操作畫面的邏輯部分" 分開。(還有一種是兩邊根本是用不同的玩意在寫的,比方 ASP.NET Web Form , WPF ...)

    比如說在 Windows  Forms 專案的預設範本會將一個 Form1 Class 分別放在 Form1.Designer.cs 和 Form1.cs 兩個檔案,可是當你編譯的時候,這兩個檔案會組合起來。

    當你隨便用 Partial Class 就會發生一個問題,你可能會開無限多個 Partial Class,然後把所有的程式碼到處亂塞。

    於是一個 Class 就變得非常大,當它大到一定程度,就會發生幾件事情:

    (1) 你的 Class 變成了個怪物,無所不包,完全喪失明確的意圖、清晰的理解性、職責超級混亂。這樣的類別,可維護性會變得很差,除非你的目的是要整死以後接手維護的人。

    (2) 當同一個 Class 的程式碼分散在過多的類別檔案們要被編譯時 ,通常第一次會正常,過個幾次後可能就會發生記憶體不足的現象,因為編譯器被撐爆了,然後你就得不斷地關掉 Visual Studio ,然後重新開啟。


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


    2017年1月9日 上午 12:29
    版主
  • 所以版主以我的狀況來說就是建議用【模組】跟【類別】的方式來使用嗎?
    2017年1月9日 上午 02:39
  • 不是會有什麼問題, 而是製作Form的Partial Class通常會放與Form有關的功能, 如果是多種場合會用到的功能建議就放在類別或模組中
    2017年1月9日 上午 02:47
  • 不是會有什麼問題, 而是製作Form的Partial Class通常會放與Form有關的功能, 如果是多種場合會用到的功能建議就放在類別或模組中

    關於form有關的功能是指Button、CheckBox之類的東西嗎?

    那假設我在新的類別中想要更改form1有關的參數,比如說Button1.Enabled = False,

    那在新的類別中該怎麼去做呢?


    2017年1月9日 上午 03:21
  • 如果是 "Button1.Enabled=False" 這種程式碼就被稱為 "對畫面的操作邏輯",在大部分的情境下,這就會寫在 Form1.cs 中。

    如果是另外一種狀況,這個邏輯內部和畫面操作可以無關者,會另外用 Module (在 C# 為 static class) 或 class 來建立。


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

    2017年1月9日 上午 07:07
    版主
  • 如果是 "Button1.Enabled=False" 這種程式碼就被稱為 "對畫面的操作邏輯",在大部分的情境下,這就會寫在 Form1.cs 中。

    如果是另外一種狀況,這個邏輯內部和畫面操作可以無關者,會另外用 Module (在 C# 為 static class) 或 class 來建立。


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

    所以有關畫面的邏輯操作就只能寫在Form.vb裡面嘛

    那今天我新增一個Variable.vb裡面想放置所有的變數

    我在Form1vb想呼叫Variable.vb的A變數,那我該怎麼呼叫呢?

    我有在Variable.vb把變數設為public,在Form1中用Variable.A來呼叫,但是好像沒辦法這樣做

    • 已編輯 FangDi 2017年1月11日 上午 01:23 修正
    2017年1月11日 上午 01:09
  • 如果是 "Button1.Enabled=False" 這種程式碼就被稱為 "對畫面的操作邏輯",在大部分的情境下,這就會寫在 Form1.cs 中。

    如果是另外一種狀況,這個邏輯內部和畫面操作可以無關者,會另外用 Module (在 C# 為 static class) 或 class 來建立。


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

    所以有關畫面的邏輯操作就只能寫在Form.vb裡面嘛

    那今天我新增一個Variable.vb裡面想放置所有的變數

    我在Form1vb想呼叫Variable.vb的A變數,那我該怎麼呼叫呢?

    我有在Variable.vb把變數設為public,在Form1中用Variable.A來呼叫,但是好像沒辦法這樣做

    已找到用法 設成Public Shared a as integer 則可在Form1使用
    2017年1月11日 上午 01:26
  • 如果是 "Button1.Enabled=False" 這種程式碼就被稱為 "對畫面的操作邏輯",在大部分的情境下,這就會寫在 Form1.cs 中。

    如果是另外一種狀況,這個邏輯內部和畫面操作可以無關者,會另外用 Module (在 C# 為 static class) 或 class 來建立。


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

    請問一下,假設我要在不同的.vb中,改變Form1上Button的狀態該如何使用呢?
    2017年1月11日 上午 01:30
  • 你如果連 Shared 都是第一次知道, 那表示還欠缺很多基礎知識。因為你分不清楚執行個體成員和靜態成員。要寫好的程式,基本觀念很重要,一直盲寫而不注重基礎的結果通常就是造就 "會動,但難以維護,缺乏彈性" 的程式碼。

    建議你把以下的 MSDN 文件內容先看一看
    程式結構和程式碼慣例 (Visual Basic)

    Visual Basic 中的物件導向程式設計

    至於你那個改變 Form1 Button 的問題,可以參考
    老調重彈 -- 再談 Windows Form 程式視窗互相傳值(1)
    老調重彈 -- 再談 Windows Form 程式視窗互相傳值(2)


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



    2017年1月11日 上午 03:46
    版主
  • 您可以考慮在不同的.vb中呼叫Form1的功能, 由Form1改變所管理的Button的狀態
    2017年1月11日 上午 04:10
  • 你如果連 Shared 都是第一次知道, 那表示還欠缺很多基礎知識。因為你分不清楚執行個體成員和靜態成員。要寫好的程式,基本觀念很重要,一直盲寫而不注重基礎的結果通常就是造就 "會動,但難以維護,缺乏彈性" 的程式碼。

    建議你把以下的 MSDN 文件內容先看一看
    程式結構和程式碼慣例 (Visual Basic)

    Visual Basic 中的物件導向程式設計

    至於你那個改變 Form1 Button 的問題,可以參考
    老調重彈 -- 再談 Windows Form 程式視窗互相傳值(1)
    老調重彈 -- 再談 Windows Form 程式視窗互相傳值(2)


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



    好的 那我先去看一下
    2017年1月11日 上午 07:01
  • 請問樓主,這個問題已經獲得解決了嗎?

    還是還有進一步的問題?


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

    2017年1月20日 下午 09:09
    版主
  • 目前暫時解決了 謝謝版主關心
    • 已標示為解答 FangDi 2017年2月6日 上午 01:28
    2017年2月6日 上午 01:27