三个窗口,第一个窗口有listbox,第二个窗口每个标签都是第一个窗口的单个item内容(已经可以同步两个值),第三个窗口的listbox要同步第一个窗口的listbox的内容,并且选中两个listbox中的值,再点击selection选中内容要显示到Team后面的两个label,对应的下面可以输入进球数和得分。点击saving,输入值会自动加入到第二窗口的相应队伍的进球总数和得分总数。
第一个窗口
第二个窗口
第三个窗口
只需要简单完成功能就行。谢谢,大神!
思路是可以在selectionchaged事件里设置另一个listbox的选中项。具体代码就不写了。
之前每次回答你,都给出完整代码,截图,从来没有采纳,如果希望详细回答,请先把所有的回答采纳了。
https://ask.csdn.net/questions/759366
https://ask.csdn.net/questions/759361
顶一个全局变量的DataTalbe,所有的操作都针对DataTable即可。
private void buttonShow_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.Parent = this;
form2.Show();
}
Form2中
private void buttonAdd_Click(object sender, EventArgs e)
{
Form1 form1 = this.Parent as Form1;
form1.listBox1.Items.Add(listBox2.SelectedItem);
//form1.Show(); //加这句可以显示出来,但不是我想要的效果
//form1.Refresh();
}
这个您不能这样干, 逻辑有问题而且不好操作。 您可以把ListBox看着显示窗口,把所有数据存在一个Array数组中,如果按照您现在的方
法,当删除ListBox1的数据时ListBox2将不容易同步ListBox1的数据。 ListBox1 ListBox2 ListBox3......都应该指向同一个数组Array, 这样
当ListBox1数据时,实际删除的是Array的数据, 此时ListBox2刷新一下依然是Array的数据,使用委托可以同时更新显示, 即使不更新,在
选择ListBox2时做个判断处理也能同步。这样才不会出现数据重复复制引起的错误信息。
给你一个小例子:
//属性类
public class Value
{
//属性
public string name { get; set; }
public int goals { get; set; }
public int scores { get; set; }
//构造函数
public Value(string n, int g, int s)
{
name = n;
goals = g;
scores = s;
}
}
//数据集合 单列模式
public sealed class ListValue
{
//数据保存位置
public List<Value> allValue = new List<Value>();
private static ListValue all;
//防止重复构造
private ListValue() { }
public static ListValue GetValue()
{
if (all == null)
{
all = new ListValue();
}
return all;
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//添加数据
Value v = new Value("test", 20, 50);
//这个是保存数据的类
ListValue vl = ListValue.GetValue();
vl.allValue.Add(v);
//遍历填充ListBox
foreach(Value vs in vl.allValue)
{
listBox1.Items.Add(vs.name);
}
}
}