gpt4 book ai didi

c# - 用文本框中的数字填充字典并将文本框作为键

转载 作者:太空宇宙 更新时间:2023-11-03 23:12:41 33 4
gpt4 key购买 nike

我正在编写一个代码,我想从多个 TextBox 控件中获取数字到一个集合中。对其进行排序,然后更改包含前 3 个最高值的文本框的背景颜色。这是字典

Dictionary<System.Windows.Forms.TextBox, string> all_cycles = new Dictionary<System.Windows.Forms.TextBox, string>(10);
for (var i = 1; i < 5; i++)
{
all_cycles.Add(((System.Windows.Forms.TextBox)this.Controls.Find("txtendc" + Convert.ToString(i), true)[0]),this.Text);
}

我知道使用“this.text”我不会得到文本框的值,所以这就是我问的原因。我还尝试创建一个只包含文本框值的数组,然后我用它来填充字典。但它总是丢弃一个超出数组范围的索引。或者 Index 超出范围异常。这会删除超出范围的异常:

List<System.Windows.Forms.TextBox> txtendc = new List<System.Windows.Forms.TextBox>(10);
for (var i = 1; i < 5; i++)
{
txtendc.Add((System.Windows.Forms.TextBox)this.Controls.Find("txtendc" + Convert.ToString(i), true)[0]);
}
int[] endc_content = new int[10];
for (var i = 1;i < 5; i++)
{
endc_content[i]= int.Parse(txtendc[i].Text);
}

填色我没有任何问题,只是填字典而已。如果您有比词典集合更好的解决方案,请告诉我。谢谢

编辑:如果重要的话,整个代码都在计时器滴答事件中

最佳答案

当您实例化您的类时,我会在代码后面创建一个包含所有文本框的列表。然后您可以使用 Linq 获得前 3 名。请记住,您需要确认所有文本框实际上都包含数字 - 确保您的程序在其中一个输入文本时不会崩溃。如果表单中的所有文本框都将保存这些数字,您可以执行类似这样的操作以一种方法(未测试)进行验证和排序:

private List<TextBox> myTextBoxes { get; set; }

public Form1()
{
InitializeComponent();
foreach (Control c in this.Controls)
{
if (c.GetType() == typeof(TextBox))
myTextBoxes.Add((TextBox)c);
}
}

private IEnumerable<TextBox> getTop3()
{
return myTextBoxes.Where(tb => tb.Text.AsEnumerable().All(char.IsDigit)).Select(tb => tb).OrderByDescending(tb => Double.Parse(tb.Text)).Take(3);
}

Linq 查询的第一步是将文本转换为可枚举的 char,并确保所有字符都包含数字(而不是字母)。第二个选择这些文本框。第三个将它们解析为 double 并比较它们,最大的数字在前。最后一个取列表中的前三个(包含最高 3 个数字的文本框)

编辑:根据您的评论,代码可以简化为:

public Form1()
{
InitializeComponent();

}

private IEnumerable<TextBox> getTop3(string textboxPrefix)
{
List<TextBox> textBoxesToSort = new List<TextBox>();
foreach (Control c in this.Controls)
if (c.GetType() == typeof(TextBox) && c.Name.StartsWith(textboxPrefix))
textBoxesToSort.Add((TextBox)c);

return textBoxesToSort.OrderByDescending(tb => Double.Parse(tb.Text)).Take(3);
}

关于c# - 用文本框中的数字填充字典并将文本框作为键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38506040/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com