我正在编写代码来自动化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
中未对齐的参数。和控制台输出截图也附在下面。
答案 0 :(得分:1)
您只需使用monospace
字体,就可以从其属性窗口更改font
的{{1}}(在visual studio中选择listview
,然后点击listview
)然后将字体更改为“Courier”。