【问题标题】:C# Wpf datagrid issue when declaring length of array声明数组长度时的C#Wpf datagrid问题
【发布时间】:2012-10-31 22:07:36
【问题描述】:

为了清楚起见,我有 3 个数组。 ArrX, ArrY, ArrZ

这些将被放入数组中:GridArr

我想做的是一个 wpf 应用程序,它将收集信息,将所需信息分类为 Arr1、Arr2 和 Arr3。将它们放在 GridArr 中。所以它可以被加载到数据网格中。用户可以编辑然后将更改后的值放入它曾经来自的同一数组中。 (ArrX, ArrY, ArrZ)

Datagrid 可视化示例:

Test    | Dest    | Testy
ArrX[0] | ArrY[0] | ArrZ[0]
ArrX[1] | ArrY[1] | ArrZ[1]
ArrX[2] | ArrY[2] | ArrZ[2]

ArrX 将值放入 Test。 到达目的地等

问题是我必须声明 GridArr 的大小。我创建了一个函数来为 GridArr 返回正确的大小,但是我无法在不必将数组放入类中(没有出错)的情况下声明它,如果 GridArr 在类中,我不知道我应该怎么做设法将新用户编辑的值放入 ArrX、ArrY 和 ArrZ。

    string[] ArrX = { "test", "", "asd" };
    int[] ArrY = { 1, 2, 3 };
    int[] ArrZ = {111, 2212, 32323};


    private LootData[] GridArr = new LootData[ArrX.Length]; /* Error occurs.
    What should I do to declare it´s length without writing for example 3 */

    public MainWindow()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
            GridArr[0] = new LootData(ArrX[0], ArrY[0], ArrZ[0]);//Code LootData below
            GridArr[1] = new LootData(ArrX[1], ArrY[1], ArrZ[1]);
            GridArr[2] = new LootData(ArrX[2], ArrY[2], ArrZ[2]);

            dataGrid1.ItemsSource = null;
            dataGrid1.ItemsSource = arr;
    }

LootData 类,以防有人想知道其中的内容。

class LootData
{
    private string name;
    private int dest;
    private int id;

    public LootData(string Name, int Dest, int Id)
    {
        name = Name;
        dest = Dest;
        id = Id;
    }

    public string Name 
    {
        get { return name; } 
        set { name = value; } 
    }

    public int Dest
    {
        get { return dest; }
        set { dest = value; }
    }

    public int Id
    {
        get { return id; }
        set { id = value; }
    }
}

【问题讨论】:

    标签: c# wpf arrays datagrid


    【解决方案1】:

    在构造函数或按钮事件处理程序中初始化字段GridArr

    private LootData[] GridArr;
    
    public MainWindow()
    {
        InitializeComponent();
        GridArr = new LootData[ArrX.Length];//ArrX.Length is accessible now
    }
    

    【讨论】:

    • 感谢您的回复!就1个问题。但是我不能从其他按钮事件等中访问附加值?我不知道我是否在寻找全局数组或某种东西,但如果有办法避免它,我很想知道,因为我听说不推荐使用全局数组。
    • 你可以从类中的其他方法访问它,因为它是在类中声明的
    • 你用private访问器声明了GridArr字段,这意味着它可以从类中的所有方法访问,这是正常的。我认为您的意思是 global 的公共字段,如果这是您的意思,那么是的,不推荐,您可以阅读更多关于术语 encapsulation 的信息以了解原因。
    猜你喜欢
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多