根据UI中的变量动态更新变量

本文关键字:变量 动态 更新 UI 根据 | 更新日期: 2023-09-27 18:01:26

我在c#代码中初始化了下面的数组。如下图所示,将数据a1,数据a2,数据a3手动写入代码,并将其分配给'row'

string[] row = new string[] { type, data1, data2, data3, shares };

我想动态赋值,而不是手动编码。为了确保发生这种情况,我从UI中获取变量的值并将其分配给c#变量,就像这样。

var change_data = "data1, data2"

因此,例如,我应该能够改变变量'row'如下:

 string[] row = new string[] { type, data1, data2, shares };

现在是另一个例子。

var change_data = "data1";

这也应该更新行如下。

string[] row = new string[] { type, data1, shares };

根据UI中的变量动态更新变量

如评论中所述,由于数组具有固定长度,因此最好使用某种集合。Blorgbeard的答案使用Dictionary<K,V>,另一种方法是使用List<T>

你所能做的就是将List封装在一个方法中,以你的第一个值开始你的List,插入你的输入值,然后添加最后的值:

假设input的值为data1, data2:

public static List<string> CreateRowData(string input) {
    var returnList = new List<string> { "type" };
    var inputs = input.Split(',').Select(s => s.Trim());
    foreach (var item in inputs) {
        returnList.Add(item);
    }
    returnList.Add("shares");
    return returnList;
}

//type
//data1
//data2
//shares

您不希望像那样使用变量名作为字符串。相反,您可以使用字典:

// setup
var fields = new Dictionary<string,string>() {
    {"data1", "data 1 value"},
    {"data2", "data 2 value"},
    {"data3", "data 3 value"},
};
// get data from UI
var change_data = "data1, data2";
var change_names = change_data.Split(',').Select(t=>t.Trim());
// or just this, if you can get it from your UI:
// var change_names = new [] {"data1", "data2"};
// build new row based on change_names
var row = new List<string>();
row.Add(type);
row.AddRange(change_names.Select(t=>fields[t]));
row.Add(shared);