0

私のプロジェクトでは、 を使用しStringBuilderて でテーブルを作成していますRichEditBox。しかし、私の列では、データ値は互いに異なります。そのため、シャッフルされたデータのように見えます。しかし、私の例外的な出力は、テーブル内のデータの長さを完全に修正することです。output でテーブルが適切に完成していることがわかります。

StringBuilderC# で文字列の長さを修正する方法を教えてください。

私のコード:

Connection();

try
{
    string Today = "Student Test Mark Details";
    string Line = "----------------------------------";

    SqlCommand cmd = new SqlCommand();
    cmd.CommandType = CommandType.Text;

    cmd = new SqlCommand("select ExaminationName, ExaminationCenter, ExaminationDate, Subjects, MarkObtained, Total, Percentage, Grade from StudentMarksHistory where StudentCode='" + ICBEStudentCode.Text + "' and ExaminationName='" + TBExaminationName.Text + "' and ClassName='" + ICBEClassSection.Text + "' and Remark='Record Saved'", cs);

    StringBuilder paragraph = new StringBuilder();
    SqlDataReader dr = cmd.ExecuteReader();

                paragraph.Append(Today).Append("\t\n");
                paragraph.Append(Line).Append("\t\n\n\n\n\n");

                paragraph.Append("ExamName").Append("\t");
                paragraph.Append("ExamCenter").Append("\t");
                paragraph.Append("ExamDate").Append("\t");
                paragraph.Append("Subject").Append("\t\t\t");
                paragraph.Append("Mark").Append("\t");
                paragraph.Append("Total").Append("\t");
                paragraph.Append("Percentage").Append("\t");
                paragraph.Append("Grade").Append("\n\n");

                while (dr.Read())
                {
                    DateTime DateName = Convert.ToDateTime(dr["ExaminationDate"]);
                    string subject = dr["Subjects"].ToString().Trim();
                    //int Len = subject.Length;
                    //subject = subject.ToString().PadRight(50 - Len, ' ');
                    paragraph.Append(dr["ExaminationName"].ToString()).Append("\t");
                    paragraph.Append(dr["ExaminationCenter"].ToString()).Append("\t");
                    paragraph.Append(DateName.ToString("dd/MM/yyyy")).Append("\t");
                    paragraph.Append(subject);
                    paragraph.Append(' ', 15 - subject.Length);
                    //paragraph.Append(subject.PadRight(100));
                    paragraph.Append(dr["MarkObtained"].ToString()).Append("\t");
                    paragraph.Append(dr["Total"].ToString()).Append("\t");
                    paragraph.Append(dr["Percentage"].ToString()).Append("\t");
                    paragraph.Append(dr["Grade"].ToString()).Append("\n");
                }
                string Notes = "************[ Minimum Pass Mark is 35 ]*************";
                paragraph.Append(" ").Append("\n\n\n\n");
                paragraph.Append(Notes).Append("\r\n");
                dr.Close();
                cs.Close();
            }
            RTBMessage.Text = paragraph.ToString();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

期待される結果:

                                   Student Test Mark Details
                              ----------------------------------


ExamName        ExamCenter      ExamDate        Subject                 Mark    Total   

Class Test 1    Room No1        24/05/2013      STOREDPROCEDURE           97       404  
Class Test 1    Room No1        25/05/2013      DOTNET                   86       404     
Class Test 1    Room No1        26/05/2013      TAMIL                    80       404        
Class Test 1    Room No1        23/05/2013      SOCIAL                   80       404                                    
Class Test 1    Room No1        27/05/2013      COMPUTER                 61       404         



                          ************[ Minimum Pass Mark is 35 ]*************
4

2 に答える 2

3

TAB を使用して列を整列させずに、StringBuilder のAppendFormatメソッドを使用して複合書式設定を使用します。

最初のコラムの例として。20文字の大きな列に左揃えで挿入する必要が
あると思います。 あなたは書くことができますExamName

 paragraph.AppendFormat("{0:20}","ExamName");

Grade6文字のスペースで右揃えの列の場合

 paragraph.AppendFormat("{0:-6}\r\n", "Total");

もちろん、この種類の配置は、RichTextBox で使用されるフォントの種類に依存します。プロポーショナル フォントを使用する場合、このテキストを好きなように配置する方法はありません。

最後に、代わりに DataGridView を使用することをお勧めします

于 2013-05-27T10:17:43.367 に答える