Hm. ‘t Was niet eens zo moeilijk: het is een kwestie van veiligheid, dat TreeDataNode van TreeNode en TreeNode van MarshalByRefObject inherited is, en dat daarvoor expliciete get en set methods moeten gemaakt worden.

Dus ‘t was een zaak van een intern id en een extern ID te hebben, een accessor te maken, en Bob’s yer uncle:

private class TreeDataNode : TreeNode
{
    private
int id;
    public int ID 
    {
        get { return id; }
        set { id=value; }
    }