如何在C#

时间:2017-04-17 18:53:28

标签: c#

您好抱歉,如果这个问题的答案已经在某处,但我没有找到,或者不理解。我要做的是在visual studio(C#)中有一个列表框,在这个列表框中有一些选项可供点击。

PinturaV $ 100

PinturaA $ 105

PinturaE $ 115

Lijas_Ag $ 112

Solvente $ 101

如果我从文本框中的列表框中选择一行例如PinturaA $ 105,它应该只显示105.然后,如果我选择例如Lijas_Ag $ 112,则文本框应显示...

105

112

依此类推,直到我按下总按钮,它会给我总数。 我的问题是文本框中只显示数字。我编码,以便程序可以读取所选的行,并告诉我空间的位置,但我不知道是否甚至需要能够将数字输入文本框。我不知道该怎么做。任何帮助将非常感激。我留下了一些照片以防万一。

谢谢

main selected

Code I have so far

5 个答案:

答案 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返回的字符串要简单得多。