我创建了一个类,并且想要使用构造函数Rtb(),
public class Rtb
{
public RichTextBox newRTB;
public Rtb()
{
newRTB = new RichTextBox();
newRTB.IsReadOnly = true;
newRTB.MouseDoubleClick += new MouseButtonEventHandler(newRTB_MouseDoubleClick);
}
... ...
然后我在下面的代码中使用Rtb(),点击菜单后添加一个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 ......)
答案 0 :(得分:1)
您可以向Rtb类添加一个静态属性,Rtb构造函数使用该属性为添加的每个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();
}
}
答案 1 :(得分:0)
RichTextBox
具有Name
属性,可以通过编程方式设置。要公开它,您可以将此属性添加到Rtb
类。
public string Name
{
get { return newRTB.Name; }
set { newRTB.Name = value; }
}