C# 反向执行算法的简写
祝贺堆栈溢出 我有一个方法,当按钮的选中状态改变时执行。 该方法使用伪数据交换富文本编辑器中的占位符文本,反之亦然。用户可以将文本从数据表拖到富文本编辑器上C# 反向执行算法的简写,c#,visual-studio-2017,C#,Visual Studio 2017,祝贺堆栈溢出 我有一个方法,当按钮的选中状态改变时执行。 该方法使用伪数据交换富文本编辑器中的占位符文本,反之亦然。用户可以将文本从数据表拖到富文本编辑器上 \u dtFields是一个包含占位符文本和相应伪数据的数据表,我的问题是,在检查状态更改时,我遍历整个数据表,查看富文本编辑器是否包含占位符文本bChecked=true,或者编辑器是否包含伪数据bChecked=false。除了我在这里所做的以外,还有没有更有效的方法用伪数据交换占位符值 private void ViewMergedD
\u dtFields
是一个包含占位符文本和相应伪数据的数据表,我的问题是,在检查状态更改时,我遍历整个数据表,查看富文本编辑器是否包含占位符文本bChecked=true
,或者编辑器是否包含伪数据bChecked=false
。除了我在这里所做的以外,还有没有更有效的方法用伪数据交换占位符值
private void ViewMergedData(System.Boolean bChecked)
{
foreach (DataRow dr in _dtFields.Rows)
{
System.String sFieldName = "<<" + dr["fldFieldName"].ToString() + ">>";
System.String sPsuedoData = dr["fldData"].ToString();
//Check for fields on the document
if (bChecked == true)
{
//Replace with psuedo data
if (this.recEmailDesigner.Document.Text.Contains(sFieldName))
{
this.recEmailDesigner.Document.Text.Replace(sFieldName, sPsuedoData);
}
}
//Check for psuedo data on the document
else if (this.recEmailDesigner.Document.Text.Contains(sPsuedoData))
{
//replace with field name
this.recEmailDesigner.Document.Text.Replace(sPsuedoData, sFieldName);
}
}
}
private void ViewMergedData(System.Boolean b选中)
{
foreach(数据行dr in _dtFields.Rows)
{
系统。字符串sFieldName=“”;
System.String sPsuedoData=dr[“fldData”].ToString();
//检查文档上的字段
如果(b检查==真)
{
//替换为psuedo数据
if(this.recEmailDesigner.Document.Text.Contains(sFieldName))
{
this.recEmailDesigner.Document.Text.Replace(sFieldName,sPsuedoData);
}
}
//检查文档上的psuedo数据
else if(this.recEmailDesigner.Document.Text.Contains(sPsuedoData))
{
//替换为字段名
this.recEmailDesigner.Document.Text.Replace(sPsuedoData,sFieldName);
}
}
}
您可以将sFieldName
和sPseudoData
变量替换为两个字符串的动态数组,然后使用基于b检查的索引选择哪个是“in”和“out”字符串。然后,您只需要一个执行测试和替换的代码“实例”:
private void ViewMergedData(System.Boolean b选中)
{
int index=B检查?0:1;
foreach(数据行dr in _dtFields.Rows)
{
System.String[]sInOut=
{
“”,//[0]-是sFieldName
dr[“fldData”].ToString()/[1]是sPseudoData
};
//检查文档上的字段名或伪数据
if(this.recEmailDesigner.Document.Text.Contains(sInOut[index]))
{
//替换为psuedo数据或字段名
this.recEmailDesigner.Document.Text.Replace(sInOut[index],sInOut[1-index]);
}
}
}
使用这种i
和1-i
“切换回”是C
和C++
编码中的常见范例,但可能有一种更传统和/或更有效的方法来实现类似于C#
的东西(我对这种语言的经验要少得多) 这很有帮助,教会了我一些新的东西。非常感谢。