- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个:
public abstract class DRT_Tvw_Abstract : TreeView
{
TableCountMetrics metrics;
public TableCountMetrics Metrics { get => metrics; set => metrics = value; }
public class TableCountMetrics
{
int schemaNameCount = 0;
int tableNameCount = 0;
public int SchemaNameCount { get => schemaNameCount; set => schemaNameCount = value; }
public int TableNameCount { get => tableNameCount; set => tableNameCount = value; }
}
public DRT_Tvw_Abstract() : base()
{
}
}
public class DRT_Tvw_TableList_Unfiltered : DRT_Tvw_Abstract
{
public DRT_Tvw_TableList_Unfiltered() : base()
{
}
public void _CreateTreeView(DataTable dataTable)
{
tableListTreeViewNode = new {treeview node from my class that derives from TreeNode}
Nodes.Add(tableListTreeViewNode);
}
我想做的是覆盖
Add
方法,这样我就可以增加/减少属于我的DRT_Tvw_Abstract
类的自定义整数属性同时我添加
一个TreeNode
。我开始尝试从 TreeNodeCollection
类派生,但这似乎是一个死胡同,因为我无法弄清楚 TreeNodeCollection
类的有效构造器是什么
Nodes
(如 Nodes.Add
)是一个属性。我如何从它派生,以便我可以覆盖 Add
方法?我首先为此 poprperty 创建了一个覆盖,但我不知道如何从属性覆盖代码中覆盖方法 (Add
)。
public new virtual TreeNodeCollection Nodes
{
//override the Add method from within here somehow?
get
{
return base.Nodes;
}
set
{
}
}
覆盖 TreeNodeCollection 类的 Add(TreeNode) 方法的语法是什么?
最佳答案
添加
方法属于TreeNodeCollection
类(class)。如果您希望使用带有新签名的新 Add
方法:
自然地,您可能会考虑从 TreeNodeCollection
派生并定义新方法,并从 TreeView
派生并将其 TreeNodeCollection
替换为您的新方法自定义节点集合。但是不要尝试这个解决方案。 TreeNodeCollection
没有公共(public)构造函数。所以我建议创建 Extension Methods .
您可能想到的另一个解决方案是从 TreeView
派生并向派生的 TreeView
添加新的 Add
方法。
示例 - 扩展方法
新建一个代码文件,将以下代码复制粘贴到代码文件中:
namespace MyExtensions
{
using System.Windows.Forms;
public static class TreeNodeCollectionExtensions
{
//Just an example of a new signature, use the signature that you need instead:
public static TreeNode Add(this TreeNodeCollection nodes, string text, int tag)
{
var node = nodes.Add(text);
node.Tag = tag;
return node;
}
}
}
然后在你要使用新的Add
方法的类中,首先添加using语句:
using MyExtensions;
然后像普通方法一样使用它:
treeView1.Nodes.Add("One", 1);
关于c# - 如何覆盖 TreeNodeCollection.Add(TreeNode)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51089409/
我在 Windows 窗体 UI 上有一个 TreeView 控件,它有几个节点(有多个子节点)。我想查询节点集合,例如,1. 选择名称以'x'开头的那些 2. 选择那些在Node.Tag字段中没有任
我正在为一个使用家庭概念的应用程序创建一个插件。每个 Family 都属于一个 FamilyCategory,每个 Family 都包含 FamilySymbols。像这样的漂亮树结构: 家庭类别(门
TreeView 在其底层实现中使用 TreeNodeCollection。几乎每个 add 方法重载中的 TreeNodeCollection 都需要一个键。 它还实现了 indexOfKey 和
我有这个: public abstract class DRT_Tvw_Abstract : TreeView { TableCountMetrics metrics; public
我有一个包含动态更新的 TreeView 的 ASP.net 页面。我在使用 TreeNodeCollection 时遇到了一个问题,我无法找出背后的原因。 以下代码是该问题的简化复制,当 page_
我有这个代码: private TreeNodeCollection treeCollection; public Client(TcpClient c) {
我是一名优秀的程序员,十分优秀!