2

私は7日間頭を悩ませていた問題があるので、あなたに助けを求めることにしました. これが私の問題です:

datagridview (2 セルのみ) からデータを読み取り、指定されたすべてのデータを stringbuilder に入力します。実際には、請求書 (請求書) のような記事と価格です。今、stringbuilderで得たものをすべて文字列だけに追加して、文字列行を行の下に分割します。コードのその部分は機能しますが、私はそうではありません。記事は上下に並んでいますが、価格は 1 つの垂直線ではなく、1 つの価格より左に、もう 1 つより右に表示されます。次のようなものです。

Bread  10$
Egg    4$
Milk   5$

私のコード:

string[] lines;
StringBuilder sbd = new StringBuilder();
foreach (DataGridViewRow rowe in dataGridView2.Rows)
{
    sbd.Append(rowe.Cells[0].Value).Append(rowe.Cells[10].Value);
    sbd.Append("\n");
}
sbd.Remove(sbd.Length - 1, 1);
string userOutput = sbd.ToString();
lines = userOutput.Split(new string[] { "\r", "\n" },    
StringSplitOptions.RemoveEmptyEntries);
4

2 に答える 2

1

メソッドを使用してTrim、既存の先頭および末尾のスペースを削除できます。PadRight指定した合計の長さを得るために、適切な数のスペースを自動的に追加できます。

また、List<string>前にまとめたものを分割して取得した配列を使用する代わりに、自動的に成長する a を使用します。

List<string> lines = new List<string>();
foreach (DataGridViewRow row in dataGridView2.Rows) {
    lines.Add( row.Cells[0].Value.ToString().Trim().PadRight(25) +
               row.Cells[10].Value.ToString().Trim());
}

Courier Newただし、この書式設定方法は、文字列を等幅フォント (または など)で表示する場合にのみ機能することに注意してくださいConsolas。のようなプロポーショナル フォントArialはギザギザの列になります。

Countまたは、プロパティから行数を読み取ることで、適切なサイズの配列を作成できます

string[] lines = new string[dataGridView2.Rows.Count];
for (int i = 0; i < lines.Length; i++) {
    DataGridViewRow row = dataGridView2.Rows[i];
    lines[i] = row.Cells[0].Value.ToString().Trim().PadRight(25) +
               row.Cells[10].Value.ToString().Trim();
}

PadLeft金額を右揃えにするためにメソッドを使用することもできます

row.Cells[10].Value.ToString().Trim().PadLeft(10)
于 2013-01-24T20:35:24.517 に答える
0

このString Split メソッドを試しましたか?

String myString = "Bread         ;10$;";

String articleName = myString.split(';')[0];
String price = myString.split(';')[1];
于 2013-01-24T20:18:52.423 に答える