Sno*_*ofe 3 .net c# datagridview winforms
我试图使用dataGridView创建一个简单的数独界面。问题是我无法DividerHeight上班。下面的代码能够更改垂直分隔线的宽度,但不能更改水平分隔线的宽度:
public partial class Form1 : Form
{
private DataTable sudokuTable;
public Form1()
{
InitializeComponent();
sudokuTable = getTable();
dataGridView1.DataSource = sudokuTable;
for (int i = 0; i < 9; i++){
dataGridView1.Columns[i].Width = 25;
}
dataGridView1.Columns[2].DividerWidth = 5; //Working
dataGridView1.Columns[5].DividerWidth = 5; //Working
dataGridView1.Rows[2].DividerHeight = 5; //Not working
dataGridView1.Rows[5].DividerHeight = 5; //Not working
}
private static DataTable getTable()
{
DataTable newDataTable = new DataTable();
for (int i = 0; i < 9; i++)
{
newDataTable.Columns.Add("c" + i+1, typeof(int));
}
newDataTable.Rows.Add(1, 2, 3, 4, 5, 6, 7, 8, 9);
newDataTable.Rows.Add(1, 2, 3, 4, 5, 6, 7, 8, 9);
newDataTable.Rows.Add(1, 2, 3, 4, 5, 6, 7, 8, 9);
newDataTable.Rows.Add(1, 2, 3, 4, 5, 6, 7, 8, 9);
newDataTable.Rows.Add(1, 2, 3, 4, 5, 6, 7, 8, 9);
newDataTable.Rows.Add(1, 2, 3, 4, 5, 6, 7, 8, 9);
newDataTable.Rows.Add(1, 2, 3, 4, 5, 6, 7, 8, 9);
newDataTable.Rows.Add(1, 2, 3, 4, 5, 6, 7, 8, 9);
newDataTable.Rows.Add(1, 2, 3, 4, 5, 6, 7, 8, 9);
return newDataTable;
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
Run Code Online (Sandbox Code Playgroud)
是否需要更改某些属性才能使其正常工作?
我发现了一个链接,提示未实现dividerHeight:
真的吗?
(我正在使用Visual Studio Community 2013和Net Framework 4.5)
您的代码工作正常。经过一些额外的修饰,看起来像这样:

这基本上是您的代码,应用于刚刚放入表单的普通DataGridView。
private void button1_Click_1(object sender, EventArgs e)
{
dataGridView1.DataSource = null;
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
sudokuTable = getTable();
dataGridView1.DataSource = sudokuTable;
for (int i = 0; i < 9; i++)
{
dataGridView1.Columns[i].Width = 25 + ((i+1)%3 == 0 ? 5:0);
}
dataGridView1.Columns[2].DividerWidth = 5;
dataGridView1.Columns[5].DividerWidth = 5;
dataGridView1.Rows[2].DividerHeight = 5;
dataGridView1.Rows[5].DividerHeight = 5;
dataGridView1.Rows[2].Height += 5;
dataGridView1.Rows[5].Height += 5;
dataGridView1.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView1.RowHeadersVisible = false;
dataGridView1.ColumnHeadersVisible = false;
dataGridView1.AllowUserToAddRows = false;
dataGridView1[0, 0].Selected = false;
}
Run Code Online (Sandbox Code Playgroud)
功能完全没有变化getTable。
更新:我能够重现您的问题。我DataGridView正在TabPage启动时未选择的。通过在选择选项卡之前调用按钮单击代码,我看到了您的错误;当我把在一行中选择该选项卡第一一切又恢复了..看起来像一个问题/ 错误的DGV有它的布局时,它是不可见的 ..
注意:在构造函数中调用它永远不会起作用!那还为时过早。很好,但是..Form_Load
作为临时的解决方法,您可以将代码移至“开始”位置Button。(无论如何,对于下一轮来说,具有“开始”按钮可能是一个好主意。)