您好抱歉,如果这个问题的答案已经在某处,但我没有找到,或者不理解。我要做的是在visual studio(C#)中有一个列表框,在这个列表框中有一些选项可供点击。
PinturaV $ 100
PinturaA $ 105
PinturaE $ 115
Lijas_Ag $ 112
Solvente $ 101
如果我从文本框中的列表框中选择一行例如PinturaA $ 105,它应该只显示105.然后,如果我选择例如Lijas_Ag $ 112,则文本框应显示...
105
112
依此类推,直到我按下总按钮,它会给我总数。 我的问题是文本框中只显示数字。我编码,以便程序可以读取所选的行,并告诉我空间的位置,但我不知道是否甚至需要能够将数字输入文本框。我不知道该怎么做。任何帮助将非常感激。我留下了一些照片以防万一。
谢谢
答案 0 :(得分:1)
您应该使用Regex
来获得所需的输出。您需要在Regex
ListBox
中应用event
。请在下面查看Regex
& C#
示例。
正则表达式:
\d+
以上Regex
将为您提供digit
string
CODE C#:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
// Your others code & logic
//string data = "PinturaV $100";
string data = listBox1.Text;
textBox1.Text = Regex.Match(data, @"\d+").Value;
}
答案 1 :(得分:0)
考虑到所选文本为PinturaA $105
..您可以使用正则表达式(或)字符串库方法来仅获取
string str = "PinturaA $105";
string val = (str.IndexOf("$") > 0)
? str.Substring(str.IndexOf("$"), str.Length - str.IndexOf("$"))
: string.Empty;
答案 2 :(得分:0)
您可以使用正则表达式轻松完成此操作:
var oldtext = "Solvente $101";
var newtest = Regex.Match(oldText, "\\d+$").Groups[0].Value;
变量newtext
将包含数字。
答案 3 :(得分:0)
您可以使用正则表达式,只需执行
var item = "Solvente $101";
var val = Regex.Match(item, @"\$(\d+)").Groups[1];
答案 4 :(得分:0)
其他答案都可以,可能会有效。但是你知道,处理这类事情的典型方法是将你想要的数据放在ListItems'Value
属性中,将文本放在Text
属性中,如下所示:
private void PopulateListBox1()
{
listBox1.Add(new ListItem("100","PinturaV $100"));
listBox1.Add(new ListItem("105","PinturaA $105"));
listBox1.Add(new ListItem("115","PinturaE $115"));
listBox1.Add(new ListItem("112","Lijas_Ag $112"));
listBox1.Add(new ListItem("101","Solvente $101"));
}
然后获取Value
代替Text
,如下所示:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
textBox1.Text = listBox1.SelectedValue;
}
正如您所看到的,这比解析ListItem.Text
返回的字符串要简单得多。