换成这句 if (string.IsNullOrEmpty(t.Text) && e.KeyChar.Equals('\b')) 试试
这中方式 测试过 解决不了问题 现在实际上是2个问题:
1. 不让applicationfile被删除。用如下代码做,不需要另行判断。
case "remark":
t.Text = p.Remark;
//Begin = t.Start-1;
//length = t.Length;
t.Deleteable = false;
2. 你注意看,当鼠标移动到“刷分刷”第一个刷字的一半的时候,还是手型的cursor,但是移动到刷的最左边是,成了光标。这时候输入任何字符,然后从后往前删除。发现删除到这里的时候删除不了了。但是选中文字,可以del删除。现在要解决这个问题。 新建一个applicationfield,然后添加到textcontrol中,不存在第二个问题。
本案是读取word文档,读取后的applicationfield的start位置比文字的其实位置多了1,原因不详。所以导致上述问题2. 此时用位置做判断,显然不可能解决问题。做了如下修改。
case "remark":
t.Text = " " + p.Remark;
回复 13楼gw0506的帖子
问题:
TX Control对于内容的可编辑性控制,目前英文是没有问题,中文——无法控制其局部可编辑 使用TextFieldEntered和TextFieldLeft这一对事件。进入时打开IMEMode,离开时关闭IMEMode。
private void Form1_Load(object sender, EventArgs e)
{
Helper.Instance.LoadWord(InitTemplatePath, this.txContent);
AFC = this.txContent.ApplicationFields;
DTC = this.txContent.DocumentTargets;
this.txContent.Tables.GridLines = false;
SetAppFieldsName();
InitData();
this.txContent.ImeMode = System.Windows.Forms.ImeMode.Disable;
this.txContent.TextFieldEntered += txContent_TextFieldEntered;
this.txContent.TextFieldLeft += txContent_TextFieldLeft;
}
void txContent_TextFieldLeft(object sender, TextFieldEventArgs e)
{
if (e.TextField.Name == "remark")
{
this.txContent.ImeMode = System.Windows.Forms.ImeMode.Disable;
}
else
{
this.txContent.ImeMode = System.Windows.Forms.ImeMode.Disable;
}
}
void txContent_TextFieldEntered(object sender, TextFieldEventArgs e)
{
if (e.TextField.Name == "remark")
{
this.txContent.ImeMode = System.Windows.Forms.ImeMode.NoControl;
}
else
{
this.txContent.ImeMode = System.Windows.Forms.ImeMode.Disable;
}
}
页:
1
[2]