根据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 };
如评论中所述,由于数组具有固定长度,因此最好使用某种集合。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);