我已经搜索了我问你的内容,但我可能写错了,所以我希望我输入的内容很容易理解。
我正在使用WinForms
我希望在第一个textBoxLongFormat
中使用css长格式代码,然后在第二个textboxShortFormat
中显示为css短代码。
我有两个文本框的代码和一个单独的其他类代码,用于幕后更改格式。
该类有效,但我遇到了textBoxLongFormat
的问题,我猜它会反过来发生,代码循环自身而不是关闭,所以它不会将格式发送到textBoxShortFormat
所以没有任何反应。
我知道,有些事我做错了,但我看不到。我做错了什么?能得到你的帮助真是太棒了。
以下是文本框的代码,如果有帮助的话。
我需要添加或使其工作的是什么?
private void textBoxLongFormat_TextChanged(object sender, EventArgs e)
{
CssFormatConverter cssLongFormatConverter = new CssFormatConverter();
string longFormatCss = textBoxLongFormat.Text;
string shortFormatCss = cssLongFormatConverter.ToShortFormat(longFormatCss);
textBoxShortFormat.Text = shortFormatCss;
}
private void textBoxShortFormat_TextChanged(object sender, EventArgs e)
{
CssFormatConverter cssShortFormatConverter = new CssFormatConverter();
string shortFormatCss = textBoxShortFormat.Text;
string longFormatCss = cssShortFormatConverter.ToLongFormat(shortFormatCss);
textBoxLongFormat.Text = longFormatCss;
}
提前谢谢
答案 0 :(得分:2)
添加一个布尔检查,指示另一个文本框正在更新。
bool isUpdating = false;
private void textBoxLongFormat_TextChanged(object sender, EventArgs e)
{
if (!isUpdating)
{
isUpdating = true;
CssFormatConverter cssLongFormatConverter = new CssFormatConverter();
string longFormatCss = textBoxLongFormat.Text;
string shortFormatCss = cssLongFormatConverter.ToShortFormat(longFormatCss);
textBoxShortFormat.Text = shortFormatCss;
isUpdating = false;
}
}
private void textBoxShortFormat_TextChanged(object sender, EventArgs e)
{
if (!isUpdating)
{
isUpdating = true;
CssFormatConverter cssShortFormatConverter = new CssFormatConverter();
string shortFormatCss = textBoxShortFormat.Text;
string longFormatCss = cssShortFormatConverter.ToLongFormat(shortFormatCss);
textBoxLongFormat.Text = longFormatCss;
isUpdating = false;
}
}
答案 1 :(得分:0)
在更新TextBox之前,请取消订阅TextChanged
事件。然后更新。然后重新订阅。
在第一个中,那将是:
textBoxShortFormat.TextChanged -= textBoxShortFormat_TextChanged;
textBoxShortFormat.Text = shortFormatCss;
textBoxShortFormat.TextChanged += textBoxShortFormat_TextChanged;