hansonsu 发表于 2012-2-22 00:14:00

文档只读

能否控制整个文档除了 标记文本域外均不允许编辑?

ZenosZeng 发表于 2012-2-22 10:00:00

回复 1# hansonsu 的帖子

通过键盘事件来判断什么是可以编辑,什么不能编辑:
    private void textControl1_KeyPress(object sender, KeyPressEventArgs e)
    {
      if (textControl1.TextFields.GetItem() == null)
            e.Handled = true;
    }

hansonsu 发表于 2012-2-23 17:29:00

原帖由 dof 于 2012-2-22 10:00:00 发表
通过键盘事件来判断什么是可以编辑,什么不能编辑:
    private void textControl1_KeyPress(object sender, KeyPressEventArgs e)
    {
      if (textControl1.TextFields.GetItem() == null)
   ......

此方法 若只输入 字母或 数字则有效,若输入汉字则无效,在非标记文本域用此方法还是可以输入汉字。请问有什么好办法解决。

ZenosZeng 发表于 2012-2-23 18:05:00

回复 3# hansonsu 的帖子

正如你说说,以上方法的确存在该问题,我们调查之后明天给你回复

ZenosZeng 发表于 2012-2-23 18:56:00

回复 3# hansonsu 的帖子

通过以下设置可以实现你的需求,设置文档为不能编辑,当进入TextField时设置为可编辑,当离开TextField时设置为不能编辑:
    private void Form1_Load(object sender, EventArgs e)
    {
      textControl1.EditMode = TXTextControl.EditMode.ReadAndSelect;
    }
    private void textControl1_TextFieldEntered(object sender, TXTextControl.TextFieldEventArgs e)
    {
      textControl1.EditMode = TXTextControl.EditMode.Edit;
    }
    private void textControl1_TextFieldLeft(object sender, TXTextControl.TextFieldEventArgs e)
    {
      textControl1.EditMode = TXTextControl.EditMode.ReadAndSelect;
    }

hansonsu 发表于 2012-2-24 12:04:00

这个方法还不错,但有一个新问题,txt控件对中文输入法支持不是很好,经常无法选择中文输入,需要把光标移到winform的其他textbox中后再移回txt控件中才可以操作。

有什么方法解决?

我用搜狗输入法。

hansonsu 发表于 2012-2-24 12:10:00

用tab键换焦点后还是可以输入中文,例如从一个标记文本域,用tab键把关光标跳到下一个非标记文本域(表格中)则可以直接输入 任何字符。

我希望是 tab键只可以在标记文本域中 切换。

ZenosZeng 发表于 2012-2-24 15:41:00

我的测试结果是:当光标在TextField里面时,按下Tab键是输入了一个Tab键,而不是跳转到下一个域中,不知道我们的设置是否存在什么差异,附件是我的测试代码,如有不同的地方可以直接进行修改,然后发来看一看

我使用的 TX 17.0 SP1 + VS2010 版本

页: [1]
查看完整版本: 文档只读