2013-05-04 44 views
1

我目前正在试图通过肚里的方法来填充TableLayoutPanel如下:为什么我不能在Method中访问数据?

private int _rowCount; 
public void InitPaths() 
{ 
    int c = 1; 
    int a = 1; 

    while (a < _PathRows.Length - 1) 
    { 
     var label = new Label(); 
     // 
     // Label - Format. 
     // 
     label.Dock = DockStyle.Fill; 
     label.AutoSize = false; 
     label.Text = _pfadZeilen[a]; 
     label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; 
     label.Size = new System.Drawing.Size(22, 13); 
     label.BackColor = System.Drawing.Color.Transparent; 
     TableLayoutP.Controls.Add(label, 3, c); 

     //Checkboxen Einfügen 
     var cbox = new CheckBox(); 
     // 
     //Checkbox Format. 
     cbox.Anchor = System.Windows.Forms.AnchorStyles.None; 
     cbox.AutoSize = true; 
     cbox.CheckAlign = System.Drawing.ContentAlignment.MiddleCenter; 
     cbox.Name = "checkBoxPfad" + a; 
     cbox.Size = new System.Drawing.Size(15, 14); 
     cbox.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 
     cbox.UseVisualStyleBackColor = true; 
     TableLayoutP.Controls.Add(cbox, 0, c); 
     a++; 
     c++; 

    } 

    this._rowCount = BibTable.GetRowHeights().Length; // which seems to be Holding the value only within the method 
} 

,然后删除行动的所有行,可以通过以下方法:

public void RemoveRows() 
{ 
    for (int row = _rowCount; row >= 0; row--) 
    { 
     BibTable.RowStyles.RemoveAt(row); 
     BibTable.RowCount--; 
    } 
} 

现在的问题是,如果我尝试在所有行被初始化的方法之外尝试使用TableLayoutP,它会告诉我:

Object r没有将eference设置为对象的实例。

我该怎么办?有没有办法在一个方法内部获得一个方法(我意识到在键入它的时候听起来有多愚蠢)或者其他方式来处理这种情况?

+0

'TableLayoutP'和'BibTable'之间的关系是什么。我问这是因为你初始化了'TableLayoutP'并且你从'BibTable'中删除了。我似乎是合乎逻辑的,如果你添加项目到一个集合,你不能从另一个删除它们。 – 2013-05-04 14:26:16

回答

0

你正在通过GetRowHeights()行驶,返回每一行的高度。但是您正在从RowStyles收藏中删除,这与第一个收藏没有直接关系。我认为GetRowHeights()返回的行数多于RowStyles

为什么不:

BibTable.RowCount = 0; 
BibTable.RowStyles.Clear(); 
+0

您好马丁,日Thnx为您的文章, 的事情是GetRowHeights()长度似乎是传递(在这种情况下23)正确的行量的唯一的事情。我有,因为即时插入他们在运行时从文本数据,但BibTable.RowCount说只有6行(这是错误的) 更详细的解释是在下面的链接,感谢您的帮助! http://stackoverflow.com/questions/16375030/cant-reach-data-within-method-what-possibilities-are-there – gbbb 2013-05-04 13:56:10

+0

属性'RowCount'怎么样?他应该保持正确的行数。 – 2013-05-04 13:58:20

+0

刚刚尝试过,RowCount告诉= 6(false)和BibTable.GetRowHeights()。长度= 23(正确) – gbbb 2013-05-04 14:06:13

0

您通过GetRowHeights() ittering,返回每个行的高度。但是您正在从RowStyles收藏中删除,这与第一个收藏没有直接关系。我认为GetRowHeights()返回的行数多于RowStyles

为什么不:

BibTable.RowCount = 0; 
BibTable.RowStyles.Clear(); 
+0

Martin, 我在使用GetRowHeights()之后对上述内容进行了一些研究,请参阅http://social.msdn.microsoft.com/forums/en-US/winforms/thread/ff7a4ba4-bf73-47c2 -8689-fd93113fc31e) 尽管这是唯一一个在表内传递正确数量的行的实际问题,但实际问题接缝是其他问题,我无法删除我的InitPaths()方法之外的行,我应该在那里做什么? – gbbb 2013-05-04 14:00:31

相关问题