C# 需要向MessageBox显示一个数组,其中包含作业名行和学生名列
我需要在一个MessageBox中显示学生作业成绩的转换数组。我已经放下了转置的数组部分,但是我需要messagebox具有行和列标签 现在,输出消息框仅显示3行5列的等级矩阵:C# 需要向MessageBox显示一个数组,其中包含作业名行和学生名列,c#,arrays,winforms,C#,Arrays,Winforms,我需要在一个MessageBox中显示学生作业成绩的转换数组。我已经放下了转置的数组部分,但是我需要messagebox具有行和列标签 现在,输出消息框仅显示3行5列的等级矩阵: decimal[,] decGrades = { { 87m, 88m, 89m }, { 90m, 95m, 100m }, { 70m, 80m, 90m },
decimal[,] decGrades = { { 87m, 88m, 89m },
{ 90m, 95m, 100m },
{ 70m, 80m, 90m },
{ 50m, 50m, 50m },
{ 80m, 92m, 94m } };
string[] strStudentNames = { "Adams", "Benson", "Carson",
"Daley", "Edwards" };
string[] strAssignmentNames = { "HW1", "HW2", "Exam1" };
private decimal[,] TransposeMatrix(decimal[,] newArray)
{
decimal[,] TransposedArray = new decimal[newArray.GetLength(1),
newArray.GetLength(0)];
for (int column = 0; column < newArray.GetLength(1); column++)
{
for (int row = 0; row < newArray.GetLength(0); row++)
{
TransposedArray[column, row] = newArray[row, column];
}
}
return TransposedArray;
}
private void BtnTranspose_Click(object sender, EventArgs e)
{
decGrades = TransposeMatrix(decGrades);
////CODE TO SEND GRADES ARRAY TO MESSAGE BOX
string gradesString = "";
for (int i = 0; i < decGrades.GetLength(0); i++)
{
for (int j = 0; j < decGrades.GetLength(1); j++)
{
gradesString += decGrades[i, j] + " ";
}
gradesString += "\n";
}
MessageBox.Show(gradesString, "Transposed Array");
decimal[,]deckgrades={{{87m,88m,89m},
{90米,95米,100米},
{70m,80m,90m},
{50m,50m,50m},
{80m,92m,94m};
字符串[]strStudentNames={“Adams”、“Benson”、“Carson”,
“戴利”、“爱德华兹”};
字符串[]strAssignmentNames={“HW1”、“HW2”、“Exam1”};
专用十进制[,]转置矩阵(十进制[,]新数组)
{
decimal[,]TransposeArray=新十进制[newArray.GetLength(1),
newArray.GetLength(0)];
for(int column=0;column
我似乎不知道如何将strStudentNames中的字符串数组值显示为列标签,将strAssignmentNames显示为行标签
我真的很感激能在这方面得到的任何帮助。谢谢!你可以试试这个:
private void BtnTranspose_Click(object sender, EventArgs e)
{
var matrix = TransposeMatrix(decGrades);
// Create a form
var form = new Form();
form.Text = "Transposed Array";
form.Size = new Size(500, 400);
form.StartPosition = FormStartPosition.CenterParent;
// Create a list view
var listview = new ListView();
listview.Dock = DockStyle.Fill;
listview.View = View.Details;
listview.FullRowSelect = true;
// Initialize columns titles with first empty
listview.Columns.Add("");
for ( int indexD2 = 0; indexD2 < matrix.GetLength(1); indexD2++ )
listview.Columns.Add(strStudentNames[indexD2]);
// Add rows with first column as title
for ( int indexD1 = 0; indexD1 < matrix.GetLength(0); indexD1++ )
{
var item = new ListViewItem();
item.Text = strAssignmentNames[indexD1];
for ( int indexD2 = 0; indexD2 < matrix.GetLength(1); indexD2++ )
item.SubItems.Add(matrix[indexD1, indexD2].ToString());
listview.Items.Add(item);
}
// Add the list view to the form and show it
form.Controls.Add(listview);
form.ShowDialog();
}
MessageBox不是表格数据的适当UI元素。它不是为此而设计的。它是为传递状态消息而设计的,例如错误和任务完成。您需要创建自己的表单,可以在DataGridView或类似控件中显示数据,并将其显示为模式对话框。您还可以使用DataGridView设置自定义表单的样式要将其视为包含行和列的MessageBox;)
public partial MyMessageBox : Form
{
static public Run(decimal[,] matrix, string[] titleColumns, string[] titleRows)
{
if ( titleColumns.Length != matrix.GetLength(1)
|| titleRows.Length != matrix.GetLength(0) )
throw new ArgumentException("Bounds mismatch");
var form = new MyMessageBox();
form.ListView.Columns.Add("");
for ( int indexD2 = 0; indexD2 < matrix.GetLength(1); indexD2++ )
form.ListView.Columns.Add(titleColumns[indexD2]);
for ( int indexD1 = 0; indexD1 < matrix.GetLength(0); indexD1++ )
{
var item = new ListViewItem();
item.Text = titleRows[indexD1];
for ( int indexD2 = 0; indexD2 < matrix.GetLength(1); indexD2++ )
item.SubItems.Add(matrix[indexD1, indexD2].ToString());
form.ListView.Items.Add(item);
}
form.ShowDialog();
}
}
private void BtnTranspose_Click(object sender, EventArgs e)
{
MyMessageBox.Run(TransposeMatrix(decGrades), strStudentNames, strAssignmentNames);
}