1

我有 2 个表格。在表格 1 中,我有一个树视图。在一种方法中,我得到检查的节点列表。

private void CreateListOfCheckedNodes()
        {
            TreeNodeCollection nodes = TreeData.Nodes;
            Int32 EffectedNodes = GetCheckedNodesCount(nodes);
            if (EffectedNodes > 0)
            {
              ;//my code
            }
        }

        public int GetCheckedNodesCount(TreeNodeCollection nodes)
        {
            int CheckedNodesCount = 0;

            for (int i = 0; i < nodes.Count; i++)
            {
                TreeNode node = nodes[i];
                if (node.Checked)
                {
                    TreeFieldSet Item = new TreeFieldSet { TreeId = Int32.Parse(node.Tag.ToString()), Title = node.Text };
                    MyProject.Tree.TreeCheckedNodes.TreeList.Add(Item);
                    CheckedNodesCount++;
                }

                if (node.Nodes.Count > 0)
                    CheckedNodesCount += GetCheckedNodesCount(node.Nodes);
            }
            return CheckedNodesCount;
        }

如何CreateListOfCheckedNodes在没有新的 Form1 的情况下调用 Form 2 中的方法?有了这个调用:

Tree.TreeSubjects Ts = new Tree.TreeSubjects();
Ts.CreateListOfCheckedNodes();//if CreateListOfCheckedNodes public

我得到错误!

请帮忙 !

4

2 回答 2

3

将代码移动到两个表单都可以访问的新类中。

如果它不使用任何成员变量,您可以将方法设为静态(快速浏览代码似乎表明情况就是如此)。

static class TreeNodeCollectionHelper
{
    public static int GetCheckedNodesCount(TreeNodeCollection nodes)
    {
        ...
    }
}

您也可以考虑将其作为TreeNodeCollection 类的扩展方法,但应谨慎执行,因为这可能会让您的同事感到惊讶。

于 2012-04-08T20:37:52.477 回答
1

I am not completely sure I understood your question but if you are asking how to call a method without having to make a instance of the class then make the method static.

于 2012-04-08T20:38:56.457 回答