2012-04-25 101 views
0

我編碼的發票應用程序增加控制的名字。用戶應該能夠通過從ComboBox中選擇一個產品來添加一條新行到發票的開票部分,然後根據所選產品填寫各種其他字段(價格,描述等)。VB.NET/Visual Studio 2010中,在運行時

我的問題是這樣的:當用戶添加了一個產品,我想程序自動生成下一個產品一個新的生產線。這似乎是唯一的方法來完成這將創建一個新的控制與增加名稱,即產品1,Price1,Desc1爲第一個產品,Product2,Price2,Desc2爲第二個產品,等等這是可能的,還是我所有的錯誤?

回答

1

我曾在一個點做這樣的事和我所做的就是創建的是定製用戶控件,在你的情況下,將包括一個組合框,一個充滿負載的產品,以及所有相關的控制,將在組合框的selectedindexchanged事件中填寫。在您想要顯示此信息的主窗體上放置一個面板並將您的自定義用戶控件添加到panels.controls集合中。

,因爲所有的功能基本被包含在用戶控件本身,你不應該遇到命名問題。

至於在用戶進行選擇時添加用戶控件,您可以調暗控件withevents並將自定義事件附加到用戶控件並在主窗體中處理它。由於控件將在運行時添加,因此您需要使用AddHandler調用來附加事件處理程序。

因此,要打破它,你將需要:

  1. 與所有你想要爲每個產品的控件自定義用戶的控制,並在代碼中的ID背後
  2. 事件上的自定義用戶控件告訴主窗體組合框有一個選定的值
  3. 主窗體上用於保存自定義用戶控件的面板
  4. 當在組合框。

如果要使用同一個按鈕與某個產品進行交互,可以在用戶控件背後的代碼中附加一個ID,並設置每次添加新的用戶控件時。這並不像我覺得我聽起來那麼困難,你實際上可以在面板控制集合上運行linq,並獲得滿足你指定條件的所有面板,然後從那裏做你想做的事。

關於你的第二個問題,我會假設你的用戶控件從什麼地方拉一個假的連接字符串。我會盡力追蹤發生的事情,並從那裏開始。除此之外的任何事情都只是一個WAG,並不能真正幫助你。

+0

大,實際上是有道理的!我想我對控件如何與表單有關的誤解。我沒有意識到,一旦你添加一個控件到窗體的控件集合中,你可以覆蓋它最初存儲的變量而不用替換舊的控件。如果這是有道理的。謝謝! – 2012-04-25 18:43:26

+0

它對我來說至少是這樣。但是,你可以在for循環中創建一個變量並將其添加到外部集合中,並且循環結束時,所有原始控件都將消失,但仍然可以在控制集合中引用它們。在像你這樣的情況下非常有幫助。 – 2012-04-25 18:46:29

+0

這一點知識肯定會在未來幫助我很多。至於第二個問題,我已經搜索了它試圖找到數據庫的目錄,但無濟於事。連接字符串位置設置爲「\ DatabaseName.mdf」,這使我認爲它正在查找控制的.dll所在的數據庫。 – 2012-04-25 18:47:54