2013-07-31 49 views
2

我可以知道在VB.NET中爲控件創建變量有什麼好處嗎?將UI控件中的值與單獨的變量存儲在一起?

例如:

  1. 我訪問由使用textBox.TextTextBox值。

  2. 我聲明瞭一個變量來存儲TextBox的值。然後,我通過變量訪問該值。

哪種方法更好,更靈活?

+0

我將使用TextBox.Tag屬性 – 0699

+0

@ 0699:我想這是一個可行的方法。在維護過程中,它的問題通常會變得很清楚,特別是當原始編碼器以外的人員接管維護時:「標籤」屬性沒有預定義的固定含義,它可以用於任何和所有目的。因此,無論誰來看你的代碼,都必須從類型轉換和上下文中猜測'Tag'可能用於什麼。類似的方法將是從例如'TextBox'並添加一個正確類型的單一用途屬性,這個屬性的名稱更加自明。 – stakx

回答

1

這兩種方法都有效。我個人傾向於後一種情況(單獨的變量):

使用諸如TextBox這樣的控件作爲保存業務數據的單個位置,有些人對此不以爲然。在實踐中,如果您在訪問數據時必須首先解析數值(將字符串表示重新轉換爲對象),或者在想要顯示數據時將其格式化(將對象轉換爲字符串表示形式),則這在實踐中尤其會出現問題。在這種情況下,我會決定將實際值與控件分開存儲,以便所有解析和格式邏輯可以集中到一個位置,而無需在代碼庫中重複執行。

另一方面,將值存儲在單獨的變量中需要保持該變量與控件同步。這正是Data Binding的好處。我假設你的問題是關於Windows窗體,其中數據綁定是有限的(但通常是足夠的)。但是,如果您的用戶界面基於WPF或Silverlight,則數據綁定功能更加強大(例如,它可以通過IValueConverter自動解析/格式化),並且可以爲您節省很多麻煩。 (如果您發現數據綁定太複雜,您可以手動執行相同的工作,但這意味着訂閱很多…Changed事件。)

+0

謝謝你的解釋,stakx,我想我對它有所瞭解。例如,通過TextBox.Text獲取的每個值都屬於一個字符串,這意味着如果需要使用該值進行計算,則需要進行轉換。但是,通過使用變量,我可以使用一些事件(如TextChanged事件)來嘗試將值解析爲特定格式,並在計算出現文本更改時更新爲變量。因此,在將來,當我需要進行計算時,我只需要使用該變量而不是將TextBox.Text再次轉換爲數字。 –

相關問題