0
我有一个tablelayout面板,我在其中以编程方式添加行。当第一次打开表单时使用向此容器添加行(使用带有新的ValidationForm()的语句)时,表格显示正常。第二次,出于某种原因,我在顶部添加了行?在这里看到的景象:TableLayoutPanel额外的行在顶部?
这不会影响我使用的行数,只显示多余的线条。每次关闭并打开表单时,行数都会增加。这里是我用来添加行的代码:
private void insertRow(Label label, dynamic control)
{
// Create Panel
var panel = new Panel();
// Set Object Properties
label.TextAlign = ContentAlignment.MiddleCenter;
label.Dock = DockStyle.Fill;
control.Dock = DockStyle.Fill;
panel.Dock = DockStyle.Fill;
//generate delete button
var delete = new Button();
delete.Text = "X";
delete.ForeColor = System.Drawing.Color.Red;
delete.MaximumSize.Height.Equals(40);
delete.Name = rowCount.ToString();
delete.Dock = DockStyle.Right;
delete.Click += new EventHandler(deleteRow);
// Add Controls to the panel
panel.Controls.Add(control);
panel.Controls.Add(delete);
// add controls
//tableLayoutPanel_Validations.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 48F));
tableLayoutPanel_Validations.RowCount = rowCount + 1;
tableLayoutPanel_Validations.Controls.Add(label, 0, rowCount);
tableLayoutPanel_Validations.Controls.Add(panel, 1, rowCount);
tableLayoutPanel_Validations.RowStyles.Add(new RowStyle(SizeType.AutoSize));
rowCount++;
}
rowCount是在运行时设置为0的私有int。
我的第一个直觉是整个表单在使用语句后会“重置”。窗体声明是公共部分类ValidationForm:表格{}
使用声明开放形式:
using (AVBuilder.ValidationForm validationBuilder = new AVBuilder.ValidationForm())
{
if (validationBuilder.ShowDialog() == DialogResult.OK)
{
// ADD ITEM TO Validations LIST
ListViewItem result = new ListViewItem(validationBuilder.resultObject + " : " + validationBuilder.resultName);
result.SubItems.Add(validationBuilder.resultJson);
result.ToolTipText = result.Text;
listView_Validations.Items.Add(result);
//MessageBox.Show(validationBuilder.resultJson);
}
}
可以肯定的是:rowCount是一个私有变量,但不是一个STATIC变量? –
Doh!它是!删除静态关键字固定它 –
我是一个新的SO,所以如果你发布答案我会接受:-) –