2014-03-04 3 views
0

나는런타임시 새 객체에 이름을 할당하는 방법은 무엇입니까?

public class Rtb 
{ 
    public RichTextBox newRTB; 

    public Rtb() 
    { 
     newRTB = new RichTextBox(); 
     newRTB.IsReadOnly = true; 
     newRTB.MouseDoubleClick += new MouseButtonEventHandler(newRTB_MouseDoubleClick); 
    } 
... ... 

그런 다음 내가하는를 RichTextBox 후 메뉴를 클릭 추가하는 것입니다 아래 코드에서 실시간 입찰()를 사용하는 클래스를 생성하고 생성자 실시간 입찰()를 사용하려는

List<Rtb> rtba = new List<Rtb>(); 

private void menuBox_Click(object sender, RoutedEventArgs e) 
    { 
     BlockUIContainer newBlockUC = new BlockUIContainer(); 
     newBlockUC.Margin = new Thickness(50, 10, 50,10); 
     mainWin.Document.Blocks.Add(newBlockUC); // add to mainWin, which is a big richtextbox 
     rtba.Add(new Rtb()); // add to list 
     Rtb newRichTB = new Rtb();     
     newBlockUC.Child = newRichTB.newRTB; //add to newBlockUC 

    } 

제 문제는, 새로 생성 된 각 richtextbox에 (직렬화 된) 이름을 할당하는 방법입니까? (예 : box1, box2, box3 ...)

사용자가 런타임에 하나의 richtextbox를 수동으로 삭제하는 경우 (예를 들어, 백스 페이스 키를 사용하여 box2를 삭제하는 경우) 동적으로 이름을 변경하는 방법은 무엇입니까? (그러면 box3은 box2가되고 box4는 box3이됩니다 ...)

답변

1

당신은 추가됩니다 각하여 RichTextBox에 고유 한 이름을 발행하기 위해 입찰 생성자에 의해 사용되는 당신의 입찰 클래스에 정적 속성을 추가 할 수 있습니다. (질문에 대한 추가 컨텍스트없이 제거 된 경우 "이름을 바꾸는"이유를 왜 느낄지 확신하지 못합니다.)

public class Rtb 
{ 
    private static int _NextID = -1; 
    public static int NextID 
    { 
     get 
     { 
      _NextID++; 
      return _NextID; 
     } 
    }   
    public RichTextBox newRTB; 

    public Rtb() 
    { 
     newRTB = new RichTextBox(); 
     newRTB.IsReadOnly = true; 
     newRTB.MouseDoubleClick += new MouseButtonEventHandler(newRTB_MouseDoubleClick); 
     newRTB.Name = "Box" + NextID.ToString(); 
    } 
} 
+0

고마워요! 예상 한 대답이 아니지만 실제로는 좋은 생각입니다. 하지만 하나의 문제, NextID는 항상 홀수 1,3,5,7 ... – user3339999

+0

두 장소에서 NextID를 호출합니까? (이메일을 통해 코드를 보내면 무슨 일이 벌어지는 지 짐작할 수 있습니다.) – Wonderbird

+0

아니요, 한 곳만 있습니다. 프로필에서 이메일을 찾을 수 있습니까? – user3339999

0

RichTextBox은 프로그램 적으로 설정할 수있는 속성을 가지고 있습니다. 이 속성을 공개하려면 Rtb 클래스에이 속성을 추가 할 수 있습니다.

public string Name 
{ 
    get { return newRTB.Name; } 
    set { newRTB.Name = value; } 
} 
관련 문제