【发布时间】:2017-06-02 08:54:31
【问题描述】:
我正在用 C# 构建一个控制泵流量的设备控制器。有 Form1 和 Pump-Class,包含可以通过 Form 访问的泵的所有属性和方法。到目前为止,一切正常。但是,可能存在不止一个泵的情况。当然,我可以运行可执行文件的单个实例,但你知道..
如何根据我当前的需求创建泵类的多个实例。也许是一个带有添加按钮的额外表单,可以根据需要创建尽可能多的泵?
当然,这归结为一个非常基本的问题,但我不是专业程序员。任何 cmet 都非常感谢。
提前致谢。
穆尔姆
namespace PumpController
{
public partial class Form1 : Form
{
static Pump pump;
public Form1()
{
InitializeComponent();
cb_availablePorts.DropDownStyle = ComboBoxStyle.DropDownList;
cb_baudRates.DropDownStyle = ComboBoxStyle.DropDownList;
string[] availablePorts = SerialPort.GetPortNames();
foreach (string item in availablePorts)
{
cb_availablePorts.Items.Add(item);
}
string[] commonBaudRates = new string[] { "4800", "9600", "19200", "38400", "57600", "115200" };
foreach (string item in commonBaudRates)
{
cb_baudRates.Items.Add(item);
}
}
private void bt_valueUp_Click(object sender, EventArgs e)
{
if (!(pump == null))
{
pump.increaseValue();
}
}
private void bt_valueDown_Click(object sender, EventArgs e)
{
if (!(pump == null))
{
pump.decreaseValue();
}
}
private void Form_Closing(object sender, EventArgs e)
{
Hide();
if (!(pump == null))
{
pump.Close();
}
}
private void bt_connect_Click(object sender, EventArgs e)
{
if (!(cb_availablePorts.SelectedItem == null) && !(cb_baudRates.SelectedItem == null))
{
Pump pump = new Pump(Convert.ToString(cb_availablePorts.SelectedItem), Convert.ToInt32(cb_baudRates.SelectedItem));
}
}
}
}
【问题讨论】:
-
static Pump pump;- 这意味着在整个应用程序中只有一个Pump实例可用。您可以根据需要通过创建Pump的对象来拥有多个Pumps(可能在单击添加泵按钮时) -
您可以使用
List<Pump>并在每次添加点击时将新项目添加到此列表中。 -
@kashi_rock 我考虑过创建一个列表,但不确定创建“个人”实例是否更好。
-
@ViVi 但是这样我就需要给对象单独命名,对吧...
-
@mulm :我以为你一次只有 1 个实例。如果您有多个实例,那么
List<Pump>是最佳选择
标签: c# winforms visual-studio serial-port