C#-创建实例
我的问题很简单,但我不知道如何解决它 如果我已经确定创建了多少无人机,我的代码就可以工作 INICIOC#-创建实例,c#,instance,C#,Instance,我的问题很简单,但我不知道如何解决它 如果我已经确定创建了多少无人机,我的代码就可以工作 INICIO public partial class Inicio : Form { private Drone d1,d2; private Arena arena; public Inicio() { InitializeComponent(); } private void btnconetar_Click
public partial class Inicio : Form
{
private Drone d1,d2;
private Arena arena;
public Inicio()
{
InitializeComponent();
}
private void btnconetar_Click(object sender, EventArgs e)
{
d1 = new Drone("192.168.1.10");
d2 = new Drone("192.168.1.20");
arena = new Arena(d1,d2);
arena.Show();
this.Hide();
}
}
竞技场:
public partial class Arena : Form
{
private Drone d1, d2;
public Arena(Drone d1,Drone d2)
{
InitializeComponent();
this.d1 = d1;
this.d2 = d2;
}
private void cb_drone_SelectedIndexChanged(object sender, EventArgs e)
{
if(cb_drone.SelectedIndex.ToString() == d1.ip_drone)
{
//do something
}
}
}
我的问题是:如何为n架无人机做到这一点?每次我点击一个按钮,它就会添加一个新的无人机(d3、d4、d5等),在竞技场上,我需要检查哪个组合框选择的项目是该无人机的ip
private Drone d1, d2;
public Arena(Drone d1,Drone d2)
{
InitializeComponent();
this.d1 = d1;
this.d2 = d2;
}
在代码的这一部分:例如,如果有10个无人机创建的公共竞技场实例(无人机d1、无人机d2、无人机d3等),我如何简化这一点
编辑:
List<Drone> lista_drones = new List<Drone>;
private Arena arena;
public Inicio()
{
InitializeComponent();
}
private void Inicio_Load(object sender, EventArgs e)
{
}
private void btnconetar_Click(object sender, EventArgs e)
{
lista_drones.Add(new Drone("192.168.1.10"));
lista_drones.Add(new Drone("192.168.1.20"));
arena = new Arena(lista_drones);
arena.Show();
this.Hide();
}
public partial class Arena : Form
{
public Arena(List<Drone> lista_drones)
{
InitializeComponent();
}
private void cb_drone_SelectedIndexChanged(object sender, EventArgs e)
{
if(cb_drone.SelectedIndex.ToString() == )
{
//do something
}
}
}
List lista\u无人机=新列表;
私人竞技场;;
公共事务局()
{
初始化组件();
}
私有无效Inicio_加载(对象发送方、事件参数e)
{
}
私有void btnconterar\u单击(对象发送方,事件参数e)
{
添加(新无人机(“192.168.1.10”);
添加(新无人机(“192.168.1.20”);
竞技场=新竞技场(lista_无人机);
arena.Show();
this.Hide();
}
公共部分类竞技场:表格
{
公共竞技场(列出lista_无人机)
{
初始化组件();
}
私有无效cb_无人机_SelectedIndexChanged(对象发送方,事件参数e)
{
如果(cb_drone.SelectedIndex.ToString()=)
{
//做点什么
}
}
}
如果无人机数量未知,则希望使用集合类型而不是不同的字段:
public partial class Inicio : Form
{
private List<Drone> drones;
private Arena arena;
...
public partial class Arena : Form
{
private List<Drone> drones;
public Arena(IEnumerable<Drone> drones)
{
InitializeComponent();
drones = new List<Drone>(drones);
}
...
公共部分类Inicio:表单
{
私人名单无人机;
私人竞技场;;
...
公共部分类竞技场:表格
{
私人名单无人机;
公共竞技场(IEnumerable无人机)
{
初始化组件();
无人机=新列表(无人机);
}
...
如果无人机数量未知,则希望使用集合类型而不是不同的字段:
public partial class Inicio : Form
{
private List<Drone> drones;
private Arena arena;
...
public partial class Arena : Form
{
private List<Drone> drones;
public Arena(IEnumerable<Drone> drones)
{
InitializeComponent();
drones = new List<Drone>(drones);
}
...
公共部分类Inicio:表单
{
私人名单无人机;
私人竞技场;;
...
公共部分类竞技场:表格
{
私人名单无人机;
公共竞技场(IEnumerable无人机)
{
初始化组件();
无人机=新列表(无人机);
}
...
请在构造函数中使用'params'关键字:
public partial class Arena : Form
{
private readonly Drone[] d;
public Arena(params Drone[] d)
{
InitializeComponent();
this.d = d;
}
private void cb_drone_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (var di in this.d)
{
if(cb_drone.SelectedIndex.ToString() == di.ip_drone)
{
//do something
}
}
}
}
这样你就可以这样使用它(当你已经知道它们的数量时)
或者如果你不知道他们中有多少人
public partial class Inicio : Form
{
private List d;
private Arena arena;
public Inicio()
{
InitializeComponent();
}
private void btnconetar_Click(object sender, EventArgs e)
{
d = new List(){ new Drone("192.168.1.10"), /* whatever */ };
arena = new Arena(d.ToArray());
arena.Show();
this.Hide();
}
}
请在构造函数中使用“params”关键字:
public partial class Arena : Form
{
private readonly Drone[] d;
public Arena(params Drone[] d)
{
InitializeComponent();
this.d = d;
}
private void cb_drone_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (var di in this.d)
{
if(cb_drone.SelectedIndex.ToString() == di.ip_drone)
{
//do something
}
}
}
}
这样你就可以这样使用它(当你已经知道它们的数量时)
或者如果你不知道他们中有多少人
public partial class Inicio : Form
{
private List d;
private Arena arena;
public Inicio()
{
InitializeComponent();
}
private void btnconetar_Click(object sender, EventArgs e)
{
d = new List(){ new Drone("192.168.1.10"), /* whatever */ };
arena = new Arena(d.ToArray());
arena.Show();
this.Hide();
}
}
你需要有一个无人机列表,所以使用
列表
。然后将该列表传递给你的竞技场
:
public partial class Inicio : Form {
private List<Drone> drones;
private Arena arena;
public Inicio() {
InitializeComponent();
this.drones = new List<Drone>();
}
private void btnconetar_Click(object sender, EventArgs e) {
d1 = new Drone( "192.168.1.10" );
d2 = new Drone( "192.168.1.20" );
drones.Add( d1 );
drones.Add( d2 );
// more drones
arena = new Arena( drones );
arena.Show();
this.Hide();
}
}
你需要有一个无人机列表,所以使用
列表
。然后将该列表传递给你的竞技场
:
public partial class Inicio : Form {
private List<Drone> drones;
private Arena arena;
public Inicio() {
InitializeComponent();
this.drones = new List<Drone>();
}
private void btnconetar_Click(object sender, EventArgs e) {
d1 = new Drone( "192.168.1.10" );
d2 = new Drone( "192.168.1.20" );
drones.Add( d1 );
drones.Add( d2 );
// more drones
arena = new Arena( drones );
arena.Show();
this.Hide();
}
}
使用
List
而不是不同的dN
字段。@DStanley你可能想把它写进一个可能有用的答案中。你能解释得更好一点吗?我把它们都放在一个列表中,然后在公共竞技场上使用(列表无人机)使用List
而不是不同的dN
字段。@DStanley你可能想把它写进一个可能有用的答案中。你能解释得更好一点吗?我把它们都放在一个列表中,然后在公共竞技场上使用(列表无人机)thx。请检查我的编辑。我如何检查无人机的IP是否在组合框上?在列表中搜索无人机时尝试使用linq,例如列表。其中(x=>x.IP\u-drone==combobox.selected)thx。请检查我的编辑。我如何检查无人机的IP是否在组合框上?在列表中搜索无人机时尝试使用linq,例如列表。在哪里(x=>x.ip_-drone==combobox.selected)我很高兴能帮上忙。我很高兴能帮上忙。