2017-01-14 22 views
1

PLSQLの基本構造のコードを自動化するコードを書いています。 ので、私は、以下のように、実施例のパラメータを保持しているリスト、そこでパラメータを適切に上記のように整列されなければならないコンソール出力とリストボックスに空白が表示されない

pv_student_name IN VARCHAR2 
pn_number  OUT NUMBER 

を有するので、私は普通の入力を受け取り、整列c#の手順(方法)を書かれていますパラメータを適切に整列したリストを返します。

しかし、私が使用してコンソールに印刷する場合System.Console.WriteLineその後、パラメータが適切に整列している。しかし、私はList Boxでパラメータを参照するときにスペースが追加されているもののパラメータは、適切に整列されていません。

以下はアライメントコードです。以下は

//Alignment of parameters logic 
private List<string> alignParameters(List<string> nonAligned_parameters){ 
    List<string> alignedParamtersList = new List<string>(); 

    List<string> parameterList = new List<string>(); 
    List<string> inOutList = new List<string>(); 
    List<string> dataTypeList = new List<string>(); 

    foreach (string parameter in nonAligned_parameters) 
    { 
     string[] param = parameter.Split(' '); 

     int count = 1; 
     foreach (string word in param) 
     { 
      if (count == 1) 
      { 
       parameterList.Add(word.Trim()); 
      } 
      else if (count == 2) 
      { 
       inOutList.Add(word.Trim()); 
      } 
      else if (count == 3) { 
       dataTypeList.Add(word.Trim()); 
      } 
      count++; 
     } 
    } 
    // find the longest string in the list 
    int maxLength = parameterList.Max(x => x.Length); 

    //aligning the parameters 
    int numberOfElements= parameterList.Count(); 

    for (int i = 0; i < numberOfElements; i++) 
    { 
     string param = parameterList[i].ToString().Trim(); 
     string inOut = inOutList[i].ToString().Trim(); 
     string dataType = dataTypeList[i].ToString().Trim(); 

     int requiredSpace = maxLength - param.Length + 1; 

     string spaces = new string(' ', requiredSpace); 
     string spc = ""; 
     if ("OUT".Equals(inOut)) { 
      spc = " "; 
     } 
     else if ("IN".Equals(inOut)) { 
      spc = " "; 
     } 

     string alignedParameter = param + 
            spaces + 
            inOut + 
            spc + 
            dataType; 

     // adding aligned parameters in aligned parameter list to be returned 
     alignedParamtersList.Add(alignedParameter); 
    } 

    return alignedParamtersList; 
} 

我々は新しいパラメータを追加するときにパラメータはので、問題があってもということで、追加整列して、ListBox

private void button_AddParameter_Click(object sender, EventArgs e) 
{ 
    string error = "N"; 

    //validation code here 

    if ("N".Equals(error)) { 
     parameterName = label_paramPrefix.Text + 
         textBox_parameterName.Text +" "+ 
         combo_InOut.SelectedItem.ToString()+" "+ 
         combo_DataType.SelectedItem.ToString(); 
    } 

    parameterList.Add(parameterName); 

    // Align the parameters 
    parameterListAligned = alignParameters(parameterList); 

    // populating parameter list in GUI with fresh aligned parameters 
    listBox_parameter.Items.Clear(); 
    foreach (string parameters in parameterListAligned) 
    { 
     listBox_parameter.Items.Add(parameters); 
     System.Console.WriteLine("param" + parameters); 
    } 
} 

に戻って移入され、それが呼び出されたプロシージャですコンソールは、パラメータが正しく整列されて出力されますが、ListBoxは正しく整列しません。

皆さん、私にこれを手伝ってもらえますか?ListBoxで整列して表示されるようにこれらのパラメータが必要です。

ListBoxに整列されていないパラメータが表示されているアプリケーションのスクリーンショットが添付されています。コンソール出力のスクリーンショットもその下に添付されています。

Screenshot parameters not appearing aligned in ListBox

Proper alignment in the console

+2

あなたのアプリは可変幅フォントを使用しているため、各文字の幅は同じではありません。 (W対Iのように)フォントを固定フォントに変更するか、列を使用してリストビューを使用して出力の各部分を表示する必要があります – Steve

+0

@Steveありがとうございます。しかし、私はJavaに取り組んでいます。私はjavaで作成した.netで同じアプリケーションを作るように頼んだので)ListBoxに表示されているフォントを変更する方法を教えてもらえますか(また、RichTextBoxで変更する必要があります)そこにも表示されます。また、私はLisViewを使用する方法を知らせることができます(これは私があなたが意味するものすべてを理解していない)、申し訳ありません私は求めている質問の愚かな種類の。 :-) – prnjn

+0

ここでは分かりません。デスクトップアプリケーション(WinFormsまたはWPF?)のインターフェイスを表示しましたが、ASP.NETタグで質問をマークしました。どのような種類のアプリケーションがここで話しているのかを明確にすることはできますか? – Steve

答えて

1

必要なのはmonospaceフォントを使用することで、そのプロパティ・ウィンドウ(Visual Studioでlistviewを選択し、F4をクリック)し、その後変化からlistviewfontを変更することができますそのフォントは「Courier」のようなものになります。

関連する問題