C# 作为局部和全局变量列出,并在方法调用后更改全局列表值 公共类卡 { } 公共部分类表格 { List list2=新列表(); } 公共列表插入列表(参考列表列表1) { foreach(…) { 列表1.添加(InstanceOffObject卡) } 返回列表2; } 私有无效btn_单击(…) { 插入列表(参考列表2); }

C# 作为局部和全局变量列出,并在方法调用后更改全局列表值 公共类卡 { } 公共部分类表格 { List list2=新列表(); } 公共列表插入列表(参考列表列表1) { foreach(…) { 列表1.添加(InstanceOffObject卡) } 返回列表2; } 私有无效btn_单击(…) { 插入列表(参考列表2); },c#,datagridview,scope,listbox,C#,Datagridview,Scope,Listbox,编辑1由于这是我的第二次编辑,如果有人能告诉我,我正在很好地使用“ref”修饰符,以便在调用insertInList()方法后让列表充满元素,我将不胜感激 编辑2如果列表是在方法insertInList中定义的,您将如何更改此示例,但在insert方法调用后使相同的列表充满元素 Edit3(最大的问题)我还有一个问题,我在ListBox中得到了3个列表(与Namespace.Class同名),而我只希望得到1个 public Class Card { } public partial class

编辑1由于这是我的第二次编辑,如果有人能告诉我,我正在很好地使用“ref”修饰符,以便在调用insertInList()方法后让列表充满元素,我将不胜感激

编辑2如果列表是在方法insertInList中定义的,您将如何更改此示例,但在insert方法调用后使相同的列表充满元素

Edit3(最大的问题)我还有一个问题,我在ListBox中得到了3个列表(与Namespace.Class同名),而我只希望得到1个

public Class Card
{
}
public partial class Form
{
    List<Card> list2 = new List<Card>();
}
public List<Card> insertInList(ref List<Card> list1)
{
   foreach(...)
   {
    list1.Add(instanceOfObject Card)
   }
return list2;
}
private void btn_click(...)
{
   insertInList(ref list2);
}
ubaciUListu公共列表(参考列表列表A1)
{
//List Lista11=新列表();
foreach(dataGridView1.Rows中的DataGridViewRow行)
{
Karta k=新的Karta(0,“,”);
//k.Id=(int)行。单元格[0]。值;
k、 Pojam=(字符串)行。单元格[1]。值;
k、 Opis=(字符串)行。单元格[2]。值;
清单A1.添加(k);
}
返回列表1;
}
公共部分类表单2:表单
{
列表新星=新列表();
公共表格2(列表输入)
{
初始化组件();
nova=输入;
如果(新星计数!=0)
{ 
lstBox.DataSource=nova;
}
}

请提供一个而不是代码片段-理想情况下不需要任何GUI参与。(控制台应用程序更容易作为最少的示例提供。)在方法末尾使用断点,但同时运行click事件和form2构造函数,并控制列表中的项目数。另外,override.ToString()为了让Karta类在listbox中获得正确的结果,Namespace.class值是因为您没有覆盖.ToString()类的方法。PS:您的问题在某种程度上混淆了哪个列表是哪个表单对象的一部分?哪个单击事件是哪个表单的一部分?哪个方法是哪个类的一部分?如果您可以访问表单的所有方法中的表单级字段,为什么需要使用ref关键字?我可以访问,但在方法调用后无法将对象存储在列表中(若列表是在方法之外定义的),所以我使用ref修饰符。在这种情况下,我将得到空列表。
public List<Karta> ubaciUListu(ref List<Karta> Lista1)
{
        //List<Karta> Lista11 = new List<Karta>();
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {

            Karta k = new Karta(0,"","");
          // k.Id =(int)row.Cells[0].Value;
            k.Pojam =(string) row.Cells[1].Value;
            k.Opis = (string)row.Cells[2].Value;

            Lista1.Add(k);


        }
        return Lista1;
}

public partial class Form2 : Form
{
    List<Karta> nova = new List<Karta>();
    public Form2(List<Karta> input)
    {
        InitializeComponent();

        nova = input;
        if (nova.Count!=0)
        { 
        lstBox.DataSource = nova;
        }
}