2017-04-17 60 views
0

如果对此的答案已经存在,但是我没有找到它,或者不明白它,那么很抱歉。我必须做的是在Visual Studio(C#)中有一个列表框,在这个列表框中有一些选项可供点击。如何在C中仅显示文本行的特定部分#

PinturaV $ 100

PinturaA $ 105

PinturaE $ 115

Lijas_Ag $ 112

Solvente $ 101

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

,以此类推,直到我按下按钮总额,它会告诉我总数。 我的问题是只有数字显示在文本框中。我编码的程序可以读取选定的行,并告诉我空间的位置,但我不知道是否需要这样才能将数字输入到文本框中。我不知道如何做到这一点。任何帮助将非常感激。如果有帮助,我会留下一些照片。

谢谢

main selected

Code I have so far

+1

您可以在'\ $(\ d +)' –

+2

上使用正则表达式和匹配请在您的实际问题中包含创建[MCVE]所需的相关代码。 –

回答

0

考虑选定的文本是PinturaA $105 ..你可以使用正则表达式(或)字符串库方法得到的只有像

string str = "PinturaA $105"; 
string val = (str.IndexOf("$") > 0) 
       ? str.Substring(str.IndexOf("$"), str.Length - str.IndexOf("$")) 
       : string.Empty; 
号码
0

你可以用一个正则表达式很容易地做到这一点:

var oldtext = "Solvente $101"; 
var newtest = Regex.Match(oldText, "\\d+$").Groups[0].Value; 

变量newtext将包含数字。

0

你可以使用正则表达式,只是做

​​
1

您应该使用Regex得到您所需的输出。您需要在ListBoxevent中申请Regex。请检查下面的Regex & C#示例。

正则表达式:

\d+ 

以上Regex会给你所有digitstring

代码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; 
} 
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返回的字符串简单得多。

+0

谢谢大家的帮助。我用各种建议给我需要的东西。 John Wu,我明白你这样做的方式,但由于某种原因,我无法完成它的工作,这会给我一些错误,但我确实看到了你告诉我的逻辑和简单性。最后一个问题。我应该让所有我选中的人出现在文本框中,并在选择更多时留在那里。 Ex .. 115,如果选择另一个像101,那么文本框应该保持115,并且在它下面显示101等等。任何想法如何做到这一点?我已经在文本框中将多行设置为true。我究竟做错了什么? –

相关问题