c# - table of integer - datagridview
c# - table of integer - datagridview
我正在尝试在 Windomws 窗体上显示数据网格视图。 (对于数独)
我的来源是一个 table 整数。
我正在使用数据源,但当我 运行 时没有任何显示。
public Form1()
{
InitializeComponent();
int[,] my_table = new int[9, 9] {
{ 2,1,8,3,5,7,6,4,9},
{ 5,7,3,4,9,6,8,2,1},
{ 6,9,4,1,8,2,3,5,7},
{ 1,6,9,5,2,8,4,7,3},
{ 3,5,2,9,7,4,1,8,6},
{ 4,8,7,6,1,3,2,9,5},
{ 7,3,5,2,4,1,9,6,8},
{ 8,2,1,7,6,9,5,3,4},
{ 9,4,6,8,3,5,7,1,2}
};
dataGridView1.DataSource = my_table.ToString();
dataGridView1.Refresh();
dataGridView1.Invalidate();
}
我的结果是一个灰色方块。
你能帮帮我吗?
PS : 对不起我的英语,我是法国人
试试这个:
GetRow 方法取自:
private DataTable GetDTB(int count)
{
DataTable tb = new DataTable();
for (int i = 1; i < count + 1; i++)
{
tb.Columns.Add("C" + i);
}
return tb;
}
private DataTable FillDTB(int count = 9)
{
int[,] my_table = new int[9, 9] {
{ 2,1,8,3,5,7,6,4,9},
{ 5,7,3,4,9,6,8,2,1},
{ 6,9,4,1,8,2,3,5,7},
{ 1,6,9,5,2,8,4,7,3},
{ 3,5,2,9,7,4,1,8,6},
{ 4,8,7,6,1,3,2,9,5},
{ 7,3,5,2,4,1,9,6,8},
{ 8,2,1,7,6,9,5,3,4},
{ 9,4,6,8,3,5,7,1,2}
};
DataTable dtb = GetDTB(count);
for (int i = 0; i < 9; i++)
{
dtb.Rows.Add(GetRow(my_table, i));
}
return dtb;
}
public int[] GetRow(int[,] matrix, int rowNumber)
{
return Enumerable.Range(0, matrix.GetLength(1))
.Select(x => matrix[rowNumber, x])
.ToArray();
}
您好,感谢您的回复
但我不明白,
为什么要使用数据表?不能直接为我的 int[] 提供数据源吗?
我正在尝试:
public Form1()
{
InitializeComponent();
int[,] my_table = new int[9, 9] {
{ 2,1,8,3,5,7,6,4,9},
{ 5,7,3,4,9,6,8,2,1},
{ 6,9,4,1,8,2,3,5,7},
{ 1,6,9,5,2,8,4,7,3},
{ 3,5,2,9,7,4,1,8,6},
{ 4,8,7,6,1,3,2,9,5},
{ 7,3,5,2,4,1,9,6,8},
{ 8,2,1,7,6,9,5,3,4},
{ 9,4,6,8,3,5,7,1,2}
};
dataGridView1.DataSource = FillDTB(my_table) ;
dataGridView1.Refresh();
for(int ii=0; ii<9; ii++)
{
for (int jj = 0; jj < 9; jj++)
{
richTextBox1.Text += my_table[ii, jj];
if (jj != 8)
{
richTextBox1.Text += ".";
}
}
richTextBox1.Text += Environment.NewLine;
}
// dataGridView1.Invalidate();
}
private DataTable GetDTB(int count)
{
DataTable tb = new DataTable();
for (int i = 1; i < count + 1; i++)
{
tb.Columns.Add("C" + i);
}
return tb;
}
private DataTable FillDTB(int[,] matrix, int count = 9)
{
DataTable dtb = GetDTB(count);
for (int i = 0; i < 9; i++)
{
dtb.Rows.Add(GetRow(matrix, i));
}
return dtb;
}//*/
public int[] GetRow(int[,] matrix, int rowNumber)
{
return Enumerable.Range(0, matrix.GetLength(1))
.Select(x => matrix[rowNumber, x])
.ToArray();
}
在我的富文本框中,没关系,我有我的价值观。
但在 datagridview 中,我在第一列中只有 "System.Int32[]" 而在其他列中没有任何内容。
我想念什么?
好的,找到了
public Form1()
{
InitializeComponent();
int[,] my_table = new int[9, 9] {
{ 8,2,3,4,5,9,1,6,7},
{ 6,9,7,8,1,2,5,6,4},
{ 5,1,4,6,7,3,2,9,8},
{ 7,4,1,3,9,6,8,2,5},
{ 3,6,5,1,2,8,7,4,9},
{ 2,8,9,5,4,7,6,1,3},
{ 1,5,2,7,3,4,9,8,6},
{ 9,3,8,2,6,5,4,7,1},
{ 4,7,6,9,8,1,3,5,2},
};
dataGridView1.DataSource = FillDTB(my_table) ;
dataGridView1.Refresh();
for(int ii=0; ii<9; ii++)
{
for (int jj = 0; jj < 9; jj++)
{
richTextBox1.Text += my_table[ii, jj];
if (jj != 8)
{
richTextBox1.Text += ".";
}
}
richTextBox1.Text += Environment.NewLine;
}
dataGridView1.Invalidate();
}
private DataTable GetDTB(int count)
{
DataTable tb = new DataTable();
for (int i = 1; i < count + 1; i++)
{
tb.Columns.Add();
}
return tb;
}
private DataTable FillDTB(int[,] matrix, int count = 9)
{
DataTable dtb = GetDTB(count);
for (int ii = 0; ii < count; ii++)
{
DataRow my_line;
my_line = dtb.NewRow();
for (int jj = 0; jj < count; jj++)
{
my_line[jj] = matrix[ii, jj];
}
dtb.Rows.Add(my_line);
}
return dtb;
}//*/
这是可行的,但没有回应为什么我不能直接在 datagridview 中使用我的 2 维。
谢谢
我正在尝试在 Windomws 窗体上显示数据网格视图。 (对于数独) 我的来源是一个 table 整数。
我正在使用数据源,但当我 运行 时没有任何显示。
public Form1()
{
InitializeComponent();
int[,] my_table = new int[9, 9] {
{ 2,1,8,3,5,7,6,4,9},
{ 5,7,3,4,9,6,8,2,1},
{ 6,9,4,1,8,2,3,5,7},
{ 1,6,9,5,2,8,4,7,3},
{ 3,5,2,9,7,4,1,8,6},
{ 4,8,7,6,1,3,2,9,5},
{ 7,3,5,2,4,1,9,6,8},
{ 8,2,1,7,6,9,5,3,4},
{ 9,4,6,8,3,5,7,1,2}
};
dataGridView1.DataSource = my_table.ToString();
dataGridView1.Refresh();
dataGridView1.Invalidate();
}
我的结果是一个灰色方块。
你能帮帮我吗?
PS : 对不起我的英语,我是法国人
试试这个:
GetRow 方法取自:
private DataTable GetDTB(int count)
{
DataTable tb = new DataTable();
for (int i = 1; i < count + 1; i++)
{
tb.Columns.Add("C" + i);
}
return tb;
}
private DataTable FillDTB(int count = 9)
{
int[,] my_table = new int[9, 9] {
{ 2,1,8,3,5,7,6,4,9},
{ 5,7,3,4,9,6,8,2,1},
{ 6,9,4,1,8,2,3,5,7},
{ 1,6,9,5,2,8,4,7,3},
{ 3,5,2,9,7,4,1,8,6},
{ 4,8,7,6,1,3,2,9,5},
{ 7,3,5,2,4,1,9,6,8},
{ 8,2,1,7,6,9,5,3,4},
{ 9,4,6,8,3,5,7,1,2}
};
DataTable dtb = GetDTB(count);
for (int i = 0; i < 9; i++)
{
dtb.Rows.Add(GetRow(my_table, i));
}
return dtb;
}
public int[] GetRow(int[,] matrix, int rowNumber)
{
return Enumerable.Range(0, matrix.GetLength(1))
.Select(x => matrix[rowNumber, x])
.ToArray();
}
您好,感谢您的回复 但我不明白,
为什么要使用数据表?不能直接为我的 int[] 提供数据源吗?
我正在尝试:
public Form1()
{
InitializeComponent();
int[,] my_table = new int[9, 9] {
{ 2,1,8,3,5,7,6,4,9},
{ 5,7,3,4,9,6,8,2,1},
{ 6,9,4,1,8,2,3,5,7},
{ 1,6,9,5,2,8,4,7,3},
{ 3,5,2,9,7,4,1,8,6},
{ 4,8,7,6,1,3,2,9,5},
{ 7,3,5,2,4,1,9,6,8},
{ 8,2,1,7,6,9,5,3,4},
{ 9,4,6,8,3,5,7,1,2}
};
dataGridView1.DataSource = FillDTB(my_table) ;
dataGridView1.Refresh();
for(int ii=0; ii<9; ii++)
{
for (int jj = 0; jj < 9; jj++)
{
richTextBox1.Text += my_table[ii, jj];
if (jj != 8)
{
richTextBox1.Text += ".";
}
}
richTextBox1.Text += Environment.NewLine;
}
// dataGridView1.Invalidate();
}
private DataTable GetDTB(int count)
{
DataTable tb = new DataTable();
for (int i = 1; i < count + 1; i++)
{
tb.Columns.Add("C" + i);
}
return tb;
}
private DataTable FillDTB(int[,] matrix, int count = 9)
{
DataTable dtb = GetDTB(count);
for (int i = 0; i < 9; i++)
{
dtb.Rows.Add(GetRow(matrix, i));
}
return dtb;
}//*/
public int[] GetRow(int[,] matrix, int rowNumber)
{
return Enumerable.Range(0, matrix.GetLength(1))
.Select(x => matrix[rowNumber, x])
.ToArray();
}
在我的富文本框中,没关系,我有我的价值观。 但在 datagridview 中,我在第一列中只有 "System.Int32[]" 而在其他列中没有任何内容。
我想念什么?
好的,找到了
public Form1()
{
InitializeComponent();
int[,] my_table = new int[9, 9] {
{ 8,2,3,4,5,9,1,6,7},
{ 6,9,7,8,1,2,5,6,4},
{ 5,1,4,6,7,3,2,9,8},
{ 7,4,1,3,9,6,8,2,5},
{ 3,6,5,1,2,8,7,4,9},
{ 2,8,9,5,4,7,6,1,3},
{ 1,5,2,7,3,4,9,8,6},
{ 9,3,8,2,6,5,4,7,1},
{ 4,7,6,9,8,1,3,5,2},
};
dataGridView1.DataSource = FillDTB(my_table) ;
dataGridView1.Refresh();
for(int ii=0; ii<9; ii++)
{
for (int jj = 0; jj < 9; jj++)
{
richTextBox1.Text += my_table[ii, jj];
if (jj != 8)
{
richTextBox1.Text += ".";
}
}
richTextBox1.Text += Environment.NewLine;
}
dataGridView1.Invalidate();
}
private DataTable GetDTB(int count)
{
DataTable tb = new DataTable();
for (int i = 1; i < count + 1; i++)
{
tb.Columns.Add();
}
return tb;
}
private DataTable FillDTB(int[,] matrix, int count = 9)
{
DataTable dtb = GetDTB(count);
for (int ii = 0; ii < count; ii++)
{
DataRow my_line;
my_line = dtb.NewRow();
for (int jj = 0; jj < count; jj++)
{
my_line[jj] = matrix[ii, jj];
}
dtb.Rows.Add(my_line);
}
return dtb;
}//*/
这是可行的,但没有回应为什么我不能直接在 datagridview 中使用我的 2 维。
谢谢