如何在不循环而不发送文本的情况下将文本从一个文本框传输到另一个文本框?

时间:2013-01-15 21:20:14

标签: c#

我已经搜索了我问你的内容,但我可能写错了,所以我希望我输入的内容很容易理解。

我正在使用WinForms

创建一个包含两个文本框的Css格式化程序

我希望在第一个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;
    }

提前谢谢

2 个答案:

答案 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;