【问题标题】:How to use an object across winforms [closed]如何跨winforms使用对象[关闭]
【发布时间】:2013-08-21 20:36:50
【问题描述】:

所以我有一个自定义对象类的列表,所以代码如下所示

var itemList = new List<Item>();

所以对于我的 Item 它实际上只是一个简单的类,它只继承默认值,并且只有 3 个名为

的私有字段
private double Price;
private string @Url;
private string Name;
public double setPrice(string price)
{
    this.Price = price;
}

自从关于如何从列表中删除的问题得到解答后,我的问题是如何从列表中访问创建的项目对象并从单独的 Windows 窗体中编辑其字段。 即。

List<Item> items = new List<Item>();
private void itemListBox_DoubleClick(object sender, EventArgs e)
{
    if (itemListBox.SelectedItem != null)
    {
        var editor = new form2();
        editor.Show(); //creating a new winform 
    } 
}

如何在编辑表单中编辑 item 变量。 所以如果我去第二种形式。如何从集合中的项目访问 name 属性?

【问题讨论】:

  • 使用itemList.Remove(item) 从列表中删除一个项目。至于你的第二个问题,你可以将列表传递给表单的构造函数,或者在该表单上有一个公共的List&lt;Item&gt; 属性,或者最终创建变量public static,这样就可以从代码中的任何地方访问它,尽管这通常不是一个好的设计,除非你想遵循单例模式。
  • -1:请查看 List&lt;&gt; 上的 MSDN 主题,例如 List<T>.RemoveList<T>.RemoveAll,并用您对这些方法的更具体问题更新您的问题。 (也请不要在一个帖子中问 2 个问题)。
  • 对第二个问题进行了清晰的编辑

标签: winforms c#-2.0


【解决方案1】:

如果你有对Item的引用,你可以直接使用Remove

 itemList.Remove(someItem);

或者要删除特定索引处的Item,请使用RemoveAt

 itemList.RemoveAt(5);

现在,要跨不同类访问此 itemList,请将其设为公共静态字段或属性:

public class MyForm {
    public static List<Item> ItemList;
}

然后使用定义它的类的名称来引用它:

MyForm.ItemList.Add(...);

【讨论】:

  • +1:有用的链接,可能对 OP 没有帮助...最有可能的情况是列表中按名称显示的项目,并且需要按名称进行删除 - Remove 可能会点击参考/由于课堂上缺少Equals,价值行为期望不匹配...
  • @AlexeiLevenkov 是的,但我真的不想涵盖从列表中删除项目的所有可能的方法,只是大的。
【解决方案2】:

您可以通过调用 itemList.Remove(item); 从列表中删除一个项目

不确定您的第二个问题在问什么。

【讨论】:

    猜你喜欢
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 2013-05-05
    • 2022-01-24
    • 1970-01-01
    相关资源
    最近更新 更多