2017-04-17 7 views
0

こんにちは、この回答はすでにどこかにありますが、見つからなかったか、理解できませんでした。私がしなければならないのは、ビジュアルスタジオ(C#)のリストボックスがあり、このリストボックスにはいくつかのオプションがあります。Cでテキスト行の特定の部分だけを表示するには

PinturaV $ 100

PinturaAに$ 105

PinturaEに$ 115

Lijas_Ag $ 112

Solvente $

101私は例のテキストでリストボックスからPinturaA $ 105の行を選択した場合私はそれを持っているボックスは105だけ表示する必要があります。次に、Lijas_Ag $ 112を選択すると、テキストボックスが表示されます。

というように、私は合計ボタンを押すと、それは私の合計を与えるだろうまで。 私の問題は、数字だけがテキストボックスに表示されていることです。プログラムが選択された行を読み込み、スペースがどこにあるのかを教えてもらえるようにコーディングしましたが、テキストボックスに数字を入れることができるかどうか分かりません。私はこれを行う方法がありません。どんな助けでも大歓迎です。私はいくつかの写真を残した場合に備えて残した。

は、選択したテキストがPinturaA $105で考えると

main selected

Code I have so far

+1

「\ $(\ d +)」に正規表現とマッチを使用することができます –

+2

実際の質問に[MCVE]を作成するために必要な関連コードを含めてください。 –

答えて

0

ありがとうございました..あなたは

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

あなたは正規表現を使用して、ちょうどあなたがあなたの所望の出力を得るためにRegexを使用する必要があります

​​
1

を行うことができます。 ListBoxeventRegexを適用する必要があります。 Regex & C#の例を下記で確認してください。

正規表現:Regex上記

\d+ 

あなたstring

コードC#からあなたにすべてのdigitを与える:

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

他の答えはOKであり、おそらく動作します。しかし、ちょうどあなたが知っている、この種のものを処理するための典型的な方法は、このように、あなたがリストアイテム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

ありがとうございました。私は必要なものを私に与えるために様々な提案をしました。ジョン・ウー、私はあなたのやり方を理解していますが、何らかの理由でそれを動作させることができず、エラーが出ますが、あなたが私に言ったようにロジックとシンプルさが分かります。最後の1つの質問。私は選択したすべてのものをテキストボックスに表示させ、さらに選択するときにそこにとどまることになっています。 Ex。115、101のような別のものを選択した場合、テキストボックスは115を保持する必要があり、その下には101などが表示されます。どのようにこれを行うにはどのようなアイデア?テキストボックスに複数行をtrueに設定しました。私は間違って何をしていますか? –

関連する問題