控制台输出和列表框

时间:2017-01-14 14:31:14

标签: c# .net winforms

我正在编写代码来自动化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

1 个答案:

答案 0 :(得分:1)

您只需使用monospace字体,就可以从其属性窗口更改font的{​​{1}}(在visual studio中选择listview,然后点击listview)然后将字体更改为“Courier”。