我正在尝试在文本框中显示类似这样的内容。
Name Test Basket Destructive Final Grade
--------------------------------------------------
Alex 0 0 0 0
Danny 0 0 0 0
Dave 0 0 0 0
这就是我得到的:
Name Test Basket Destructive Final Grade
--------------------------------------------------
Alex 0 0 0 0
Danny 0 0 0 0
Dave 0 0 0 0
比那更糟,因为我认为0放在错误的位置。
想法是将列放在顶部,在其下方应类似于:
Name - Grade 1 - Grade 2 - Grade 3 - Final Grade
我在做什么错?
我也绝对不喜欢for循环,这就是为什么我认为0放在错误的位置。
string[] Columns = { "Name","Test", "Basket","Destructive","Final Grade"};
string[] Names = { "Alex", "Danny", "Dave", "Goerge", "Hannan", "Ian", "Muna" };
int[,] Grade = new int[7, 3];
int[] FinalGrade = new int[7];
private void uiShowMarksAZButton_Click(object sender, EventArgs e)
{
//test
Grade[0, 0] = 10;
//test
uiMarksDisplayTextBox.Text = string.Join("\t", Columns);
uiMarksDisplayTextBox.Text += System.Environment.NewLine;
for (int i = 0; i < Names.Length; i++ )
{
uiMarksDisplayTextBox.Text += (Names[i]);
for (int x = 0; x < 3; x++)
{
uiMarksDisplayTextBox.Text += ("\t" + Grade[x, x]);
}
uiMarksDisplayTextBox.Text += System.Environment.NewLine;
}
}
编辑1:要澄清一下,我的教授给了我表格的布局,不允许我更改它或文本框,这意味着我不能使用数据网格或列表视图。
当我输入Alex的成绩时,看起来像这样:
Name Test Basket Destructive Final Grade
-------------------------------------------------
Alex 10 0 0
Danny 10 0 0
Dave 10 0 0
George 10 0 0
Hannan 10 0 0
Ian 10 0 0
Muna 10 0 0
为什么所有的0都放在错误的位置?
答案 0 :(得分:0)
因此,首先,您可以使用制表符空格将列中的所有内容对齐。然后,您需要调整索引,有一些错别字,也缺少最终成绩。最长的文本字符串比典型的制表符空间长,因此最好调整制表符空间。可以按照答案中的说明进行操作
How to set the TAB width in a Windows Forms TextBox control?
进一步的代码包含所有这些内容,它还需要上述答案中的SendMessage函数
using (Graphics graphics = uiMarksDisplayTextBox.CreateGraphics())
{
int nMaxLength = (int)Columns.Concat(Names).Max(c => graphics.MeasureString(c + " ", uiMarksDisplayTextBox.Font).Width);
SendMessage(uiMarksDisplayTextBox.Handle, EM_SETTABSTOPS, 1, new int[] { nMaxLength });
}
uiMarksDisplayTextBox.Text = string.Join("\t", Columns);
uiMarksDisplayTextBox.Text += System.Environment.NewLine;
for (int i = 0; i < Names.Length; i++)
{
uiMarksDisplayTextBox.Text += Names[i];
for (int x = 0; x < 3; x++)
{
uiMarksDisplayTextBox.Text += "\t" + Grade[i, x];
}
uiMarksDisplayTextBox.Text += "\t" + FinalGrade[i];
uiMarksDisplayTextBox.Text += System.Environment.NewLine;
}