我正在编写发票应用程序。用户应该能够通过从ComboBox中选择产品来向发票的记帐部分添加新行,该产品随后会根据所选产品填写各种其他字段(价格,描述等)。
我的问题是:当用户添加产品时,我希望程序自动为下一个产品生成一个新行。似乎实现这一目标的唯一方法是创建一组具有递增名称的新控件,即第一个产品的Product1,Price1,Desc1,第二个产品的Product2,Price2,Desc2等。这是可能的,或者我是不是错了?
答案 0 :(得分:1)
我必须在某个时刻做这样的事情,我做的是创建一个客户用户控件,在你的情况下,它将包含一个组合框,在加载时填充产品,以及所有相关的控件,将在组合框的selectedindexchanged
事件中填写。在要显示此信息的主窗体上放置一个面板,并将自定义用户控件添加到panels.controls
集合中。
由于所有功能基本上都包含在用户控件本身中,因此您不应该遇到命名问题。
对于在用户进行选择时添加用户控件,您可以调暗控件withevents
并将自定义事件附加到用户控件并在主窗体中处理它。由于控件将在运行时添加,因此您需要使用AddHandler
调用附加事件处理程序。
所以为了打破它,你需要:
如果您想使用相同的按钮与某个产品进行交互,您可以在用户控件后面的代码中附加一个ID,并在每次添加新的用户控件时设置该ID。这并不难,我认为我听起来很棒,你可以在面板控件集合上运行linq并获得所有面板,你所指定的任何条件都可以满足,然后从那里做你想做的事。
关于你的第二个问题,我认为你的用户控制是从某个地方拉出一个虚假的连接字符串。我会尝试追踪那里发生的事情并从那里开始。除此之外的任何东西都只是一个WAG而且对你没有任何帮助。