C# 如何有效地处理已编辑的字符串?
我注意到VS/C中有一些东西,这对我来说有点灰色?希望有人能解释。我已经按照在线指南设置了一个Treeview控件,并复制和粘贴了表示它处理了标签并通过了某些验证的代码,正如您将在下面看到的,但是所需的结果并不完全存在 正在发生的事情: 似乎代码只是在检查编辑,而不是标签?因为如果标签没有更改,我开始看到MessageBox出现,即使值不是null,长度>0并且不包含特殊字符。。这让我相信它只是在检查新值C# 如何有效地处理已编辑的字符串?,c#,winforms,validation,C#,Winforms,Validation,我注意到VS/C中有一些东西,这对我来说有点灰色?希望有人能解释。我已经按照在线指南设置了一个Treeview控件,并复制和粘贴了表示它处理了标签并通过了某些验证的代码,正如您将在下面看到的,但是所需的结果并不完全存在 正在发生的事情: 似乎代码只是在检查编辑,而不是标签?因为如果标签没有更改,我开始看到MessageBox出现,即使值不是null,长度>0并且不包含特殊字符。。这让我相信它只是在检查新值 private void TreeSlabs_AfterLabelEdit
private void TreeSlabs_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
if (e.Label != null)
{
if (e.Label.Length > 0)
{
if (e.Label.IndexOfAny(new char[] { '@', '.', ',', '!' }) == -1)
{
// Stop editing without canceling the label change.
e.Node.EndEdit(false);
}
else
{
/* Cancel the label edit action, inform the user, and
place the node in edit mode again. */
e.CancelEdit = true;
MessageBox.Show("Invalid tree node label.\n" +
"The invalid characters are: '@','.', ',', '!'",
"Node Label Edit");
e.Node.BeginEdit();
}
}
}
else
{
/* Cancel the label edit action, inform the user, and
place the node in edit mode again. */
e.CancelEdit = true;
MessageBox.Show("Invalid tree node label.\nThe label cannot be blank",
"Node Label Edit");
e.Node.BeginEdit();
}
}
有人能证实我的理论吗
使用此代码测试值的更好方法是什么?我知道进入树中的值是根据上述条件“验证”的。。所以,如果标签没有改变,它应该仍然允许编辑,但它不会
如有任何建议,将不胜感激
非常感谢SO社区
杰克你的问题是什么?您是在试图弄清楚代码在做什么还是有特定的要求?我不知道您是否照样复制了代码,无论如何,请更改第一个条件:
if(e.Label==null)return代码>。else
部分属于外部if
条件,它需要是if(e.Label.Trim().Length>0){if(e.Label.IndexOfAny(…)…}else{e.CancelEdit=true;…}
。内部如果/else
条件正常,会准确显示什么消息框?您确定您的验证过程正确吗?您想实现什么?您好,感谢响应者(整天都在工作),因此,可以确认,这是最后一个异常“null”,因为它只返回“标签不能为空”MessageBox。我想实现什么?我只是想启用标题编辑功能,但要确保值没有错误。老实说,我还没有以最好的方式实现这一点。(如果你说不出来,我是新来的)最终,我希望能够从树视图中提取所有数据,并将其转换为HTML Texpart电子邮件正文。你的问题是什么?你是在试图弄清楚代码在做什么还是有特定的要求?我不知道你是否照样复制了代码,无论如何,改变第一个条件:if(e.Label==null)返回;
。else
部分属于外部if
条件,它需要是if(e.Label.Trim().Length>0){if(e.Label.IndexOfAny(…)…}else{e.CancelEdit=true;…}
。内部如果/else
条件正常,会准确显示什么消息框?您确定您的验证过程正确吗?您想实现什么?您好,感谢响应者(整天都在工作),因此,可以确认,这是最后一个异常“null”,因为它只返回“标签不能为空”MessageBox。我想实现什么?我只是想启用标题编辑功能,但要确保值没有错误。老实说,我还没有以最好的方式实现这一点。(如果你说不出来,我是新来的)最终,我希望能够从树视图中提取所有数据,并将其转换为HTML Texpart电子邮件正文。