2017-04-17 98 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。我究竟做錯了什麼? –

相關問題