weixin_44097963
weixin_44097963
采纳率66.7%
2019-06-25 20:17 阅读 780

C# winform listbox,同步数据等问题。

80

三个窗口,第一个窗口有listbox,第二个窗口每个标签都是第一个窗口的单个item内容(已经可以同步两个值),第三个窗口的listbox要同步第一个窗口的listbox的内容,并且选中两个listbox中的值,再点击selection选中内容要显示到Team后面的两个label,对应的下面可以输入进球数和得分。点击saving,输入值会自动加入到第二窗口的相应队伍的进球总数和得分总数。
图片说明
第一个窗口
图片说明
第二个窗口
图片说明
第三个窗口

只需要简单完成功能就行。谢谢,大神!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • caozhy 从今以后生命中的每一秒都属于我爱的人 2019-06-25 20:30

    思路是可以在selectionchaged事件里设置另一个listbox的选中项。具体代码就不写了。

    之前每次回答你,都给出完整代码,截图,从来没有采纳,如果希望详细回答,请先把所有的回答采纳了。
    https://ask.csdn.net/questions/759366
    https://ask.csdn.net/questions/759361

    点赞 评论 复制链接分享
  • eaqpi eaqpi 2019-06-26 10:51

    顶一个全局变量的DataTalbe,所有的操作都针对DataTable即可。

    点赞 评论 复制链接分享
  • dashicaineng 蔡能教授,网站特聘专家 2019-06-26 12:00

    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();
    }

    点赞 评论 复制链接分享
  • qq_36718671 qq_36718671 2019-06-27 17:17

    这个您不能这样干, 逻辑有问题而且不好操作。 您可以把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);
                }
            }
        }
    
    
    点赞 评论 复制链接分享

相关推荐