【问题标题】:pass an object from a form to another.Winforms将一个对象从一个窗体传递给另一个。Winforms
【发布时间】:2014-04-16 11:17:50
【问题描述】:

我有form1,form1里面有一个Events类。

  public partial class Form1 : Form
  { 
  public class Events
    {
        public string Time { get; set; }
        public int PlayerId { get; set; }
        public int TeamId { get; set; }
        public int Event { get; set; }
        public string DisplayPbp { get; set; }
        public int X { get; set; }
        public int Y { get; set; }
        public List<int> Change { get; set; }
    }
    public List<Events> events = new List<Events>();   

我还有第二个 form2,我希望能够将对象 Event 从第二个 form1 添加到第一个 form1 。这是第二个 form2 代码

      public partial class Form2 : Form
      {
      Form1 form1 = new Form1();
        List<int> Change = new List<int>();                
            for (int i = 0; i < Playinglist.Count(); i++)
            {
                Change.Add(Playinglist[i].Key);
            }     
      form1.events.Add(new BasketballApp.Form1.Events()
            {
                Time = string.Format("{0}:{1}", 10, 00),
                PlayerId = 0,
                TeamId = game.HomeTeamId,
                Event = 22,
                DisplayPbp = "Change",
                X = 0,
                Y = 0,
                Change = Change                    
            });

这不是将新对象传递给 form1。有什么建议吗?

【问题讨论】:

  • 你得到什么错误? Events 类是内部类(在表格 1 中定义)还是外部?
  • 你已经放置了 public List events = new List();在 Events 类之外,但您在 form2 中将其用作 games.events.add(blah blah);在你的班级内移动上面的行,然后再试一次
  • 事件类是(在表格 1 中定义)。在 Form1.events.Add(new Events() 行中有一个错误:System.ComponentModel.Component.Events 是一个“属性”但是像“类型”一样使用
  • 我也在课堂上移动了上面的行,然后再试一次,但没有通过对象

标签: c# winforms object parameter-passing


【解决方案1】:

根据错误它使用了错误的Events类:System.ComponentModel.Component.Events

您应该在其前面加上您的命名空间(或为Events 使用不同的名称)

在表格 1 中:

public List<YourNamespace.Events> events = new List<YourNamespace.Events>();

在 Form2 中:

form1.events.Add(new YourNamespace.Events()
{
    Time = string.Format("{0}:{1}", 10, 00),
    PlayerId = 0,
    TeamId = game.HomeTeamId,
    Event = 22,
    DisplayPbp = "Change",
    X = 0,
    Y = 0,
    Change = Change                    
});

【讨论】:

  • Events 类是否在同一个命名空间中?如果它在 Form1 中声明,则不是。然后你应该使用 YourNamespace.Form1.Events.
猜你喜欢
  • 2015-09-15
  • 1970-01-01
  • 2011-02-21
  • 2019-05-02
  • 2017-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多