>

이것이 있습니다 :

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);       
}

내가하고 싶은 것은 override   Add  내 DRT_Tvw_Abstract 의 일부인 사용자 정의 정수 속성을 늘리거나 줄일 수있는 방법  같은 시간에 나는 Add   TreeNode . 나는 TreeNodeCollection 에서 파생하려고 시작했습니다.  클래스, 그러나 그것은 TreeNodeCollection 에 대한 유효한 ctor가 무엇인지 알 수 없기 때문에 막 다른 골목처럼 보입니다.  수업

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) 메서드를 재정의하는 구문은 무엇입니까?

  • 답변 # 1

    Add  이 방법은 TreeNodeCollection 에 속합니다  수업. 새로운 Add 를 원한다면  새로운 서명이있는 메소드 :

    당연히 TreeNodeCollection 에서 파생 된 것에 대해 생각할 수도 있습니다  새로운 방법을 정의하고 TreeView 에서 파생됩니다.  그 TreeNodeCollection 를 교체  새로운 커스텀 노드 컬렉션으로. 그러나이 솔루션을 시도하지 마십시오. 와이즈 비즈  공개 생성자가 없습니다. 확장 방법을 만드는 것이 좋습니다.

    당신이 생각할 수있는 다른 해결책은 TreeNodeCollection 에서 파생 된 것입니다  새로운 TreeView 추가  파생 된 Add 에 대한 방법 .

    예-확장 방법

    새 코드 파일을 만들고 다음 코드를 복사하여 코드 파일에 붙여 넣습니다.

    TreeView
    
    

    그러면 새로운 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; } } } 를 사용할 수업에서  메소드를 사용하려면 먼저 using 문을 추가하십시오.

    Add
    
    

    그런 다음 일반적인 방법으로 사용하십시오 :

    using MyExtensions;
    
    

    treeView1.Nodes.Add("One", 1);

  • 이전 Azure 기능 콜드 시작 시간을 측정하는 방법
  • 다음 스와 거 Nginx 플라스크 -restplus