1

私が使用しているフォームには、URL をコピーして貼り付ける必要があります。貼り付けられるとすぐにURLをチェックし、有効か無効かをユーザーに通知するtextChangedイベントを作成しようとしています。また、これが発生したときに、「処理中...」のようなメッセージでテキストボックスをロックアウトできるようにしたいと考えています。

問題は以下のコードにあります。テキストボックスが無効になることはありません。プログラムは checkUrl() メソッドを実行し、テキストボックスは最初に実行されるにもかかわらず無効になることはありません (そうであると思いますが、関数呼び出しが正しく行われているという事実があります)。その下で何かをいじったり、優先順位を上げたりしています)。

メソッドの実行中にコントロールを視覚的に無効にするにはどうすればよいですか?

private void urlTxtBx_TextChanged(object sender, EventArgs e)
{
    urlTxtBx.Enabled = false;

    checkUrl();

    urlTxtBx.Enabled = true;
}
4

1 に答える 1

1

これは、アプリケーションがを無効にする前にすべてのアクティブなスレッドを完了する必要があるために発生していると思いますTextBox。次のコードを試してください。

private void urlTxtBx_TextChanged(object sender, EventArgs e)
{
    urlTxtBx.Enabled = false;
    Application.DoEvents();
    checkUrl();
    urlTxtBx.Enabled = true;
}

これにより、UIが更新されます。詳細については、こちらを確認してください

于 2012-07-24T09:19:13.147 に答える