做了一个软件,涉及到模板的问题,在模板内容里,我用{}来标记选择项,比如:重庆,又名{山城}{、}{雾都}。
    最开始我用LABEL控件数组来存放这些文字,如用将“重庆,又名”存放在label1(0)中,将“山城”存放在label1(1)中,将“、”存放在label1(2)中,将“雾都”存放在label1(3)中,将“。”存放在label1(4)中。{}里的文本内容和外面的文本内容用颜色区分开来,单击{}里的任何位置时,{}里的文本选中。但是这样做,会涉及到用户删除模板中的文本内容时不是很方便,用户添加文本时,又要去移动每个Label控件。
    于是,想到用RichTextBox控件。我用一个二维数组来存放{}里文本内容的selStart以及{}里文本的长度。不过在单击使{}里的文本颜色变化之前,如果用户对文本进行了编辑(添加、删除、剪切、粘贴等),那么二维数组里存放的selStart就相应的应该改变,那么我怎么去获取用户编辑时添加、删除、剪切、粘贴的文本的文本长度?
    还有我想让用户在{}里不能进行文本编辑功能,这个该怎么做呢?
    如果RichTextBox控件不能达到这些功能,那么我该怎么去实现上面所说的功能呢。

解决方案 »

  1.   

    用报表控件来做好像比你想的要容易的多,比如 fpspread
      

  2.   

    不用去获取用户编辑时添加、删除、剪切、粘贴的文本的文本长度,在richtextbox控件里用标记符号比如{}将你的选择项标记,然后richtextbox控件里的文本每次发生改变时就去搜索标记符号{},再将标记符号里的内容赋以颜色或将其内的背景色赋颜色即可
      

  3.   

    对哈,谢谢lauxm,一语茅塞顿开