【问题标题】:Why can't I reach data within Method?为什么我无法在 Method 中访问数据?
【发布时间】:2013-04-28 19:00:18
【问题描述】:

我目前正在尝试通过以下方法填写TableLayoutPanel

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
}

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

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

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

对象引用未设置为对象的实例。

我能做什么?有没有办法在方法中获取方法(我意识到在键入它时听起来多么愚蠢)或任何其他方式来处理这种情况?

【问题讨论】:

  • TableLayoutPBibTable 是什么关系。我问这个是因为你初始化了TableLayoutP 并从BibTable 中删除。如果您将项目添加到一个集合中,我似乎合乎逻辑,您不能从另一个集合中删除它们。

标签: c# winforms delete-row


【解决方案1】:

您正在遍历GetRowHeights(),返回每行的高度。但是您要从与第一个集合没有直接关系的 RowStyles 集合中删除。我假设GetRowHeights() 返回的行数比RowStyles 多得多。

为什么不:

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

【讨论】:

  • 嗨,马丁,谢谢你的帖子,事情是 GetRowHeights().Length 似乎是唯一能提供正确数量的行(在这种情况下为 23)的事情,因为我在运行时从文本数据中插入它们,但 BibTable.RowCount 说只有 6 行(这是错误的)下面的链接上有更详细的解释,感谢您的帮助! stackoverflow.com/questions/16375030/…
  • 财产RowCount怎么样?他应该持有正确的行数。
  • 刚试了一下,RowCount 告诉 = 6(false) and BibTable.GetRowHeights().Length = 23(正确)
【解决方案2】:

您正在遍历GetRowHeights(),返回每行的高度。但是您要从与第一个集合没有直接关系的 RowStyles 集合中删除。我假设GetRowHeights() 返回的行数比RowStyles 多得多。

为什么不:

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

【讨论】:

  • Martin,在我对上述内容进行了一些研究之后,我开始使用 GetRowHeights()(请参阅 social.msdn.microsoft.com/forums/en-US/winforms/thread/…),它看起来好像是唯一一个在表,但真正的问题接缝是别的东西,我不能删除我的 InitPaths () 方法之外的行,我应该在那里做什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-11
  • 2014-04-06
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
相关资源
最近更新 更多