1

我已经搜索了我对您的要求,但我的措辞可能有误,所以我希望我输入的内容易于理解。

我正在使用两个文本框创建一个 Css 格式化程序WinForms

我希望它在第一个中采用 css 长格式代码,textBoxLongFormat然后在第二个中出现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;
    }

先感谢您

4

2 回答 2

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;
    } 
}
于 2013-01-15T21:24:28.277 回答
0

在更新 TextBox 之前,取消订阅它的TextChanged事件。然后更新。然后重新订阅。

在第一个中,那将是:

textBoxShortFormat.TextChanged -= textBoxShortFormat_TextChanged;
textBoxShortFormat.Text = shortFormatCss;
textBoxShortFormat.TextChanged += textBoxShortFormat_TextChanged;
于 2013-01-15T21:33:55.777 回答