1

私はあなたに求めているものを探しましたが、それを間違って表現している可能性があるので、私が入力したものが理解しやすいことを願っています。

私は2つのテキストボックスを使用してCssフォーマッターを作成していますWinForms

私はそれが最初にcssロングフォーマットコードを取り、次にcssショートコードとしてtextBoxLongFormat2番目に現れることを望みます。textboxShortFormat

両方のテキストボックス用のコードと、フォーマットを変更するための舞台裏用の他のコードの別のクラスがあります。

クラスは機能しますが、問題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 に答える