Windows フォーム プロジェクトの特定のフォームに問題があります。問題があるフォームは 1 つだけです。この問題を抱えていない同じタイプの参照を使用する他のいくつかがあります。
問題は、コード ビハインドを使用してコントロールを変更しても、実際にはフォーム上でコントロールが更新されないことです。データベースから取得した値をコンボ ボックスの Items コレクションに (.Items.Add()
メソッドを介して) 追加することから、テキスト ボックスまたはチェック ボックスを有効にするかどうかを設定すること、テキスト ボックスのテキストまたはチェック ボックスのチェック状態を設定することまで、あらゆることを行うことができます。 ...何も機能しません。一部のコントロールの有効なステータスを実際に設定するコードを除いて、すべてのメソッドのすべてのコードをコメントアウトして、知らないうちに何も実行されていないことを確認しましたが、問題は引き続き発生します。
デバッガーが示すように、有効なステータスを変更するコードは確実にヒットし、条件に応じて true または false にかかわらず、Enabled ステータスが正しく設定されます。無効にする必要があるコントロールはまだ編集可能であり、編集可能なように見えます。このコードはもともと、Intellisense を使用してコントロール名を自動的に入力するように記述されているため、コード ビハインドからフォーム上の正しいコントロールへのリンクに問題はありません。また、フォームを大きくして空白のパネルにドロップし、新しいテキストボックスとチェックボックスを付けて、同じ方法でパネルを有効または無効に設定しようとしましたが、実行時にコントロールもありませんでしたコードビハインドによって変更されました。
私が見逃している可能性があるものについて何か提案はありますか? これは Windows フォームの非常に基本的な機能であるため、何が問題なのかわかりません。グーグルまたはこのサイトを検索しても、同様の問題は見つかりませんでした。
ありがとう!
編集:これは、機能するはずのコードサンプルですが、機能していません。同様のコードが他のいくつかのフォームで問題なく使用されています。
chkDisable というチェックボックスがオンになっていると、次のイベントが実行されます。
private void chkDisable_CheckedChanged(object sender, EventArgs e)
{
SetControlsEnabledStatus(!((CheckBox)sender).Checked);
}
private void SetControlsEnabledStatus(bool enabledStatus)
{
textBox1.Enabled = enabledStatus;
textBox2.Enabled = enabledStatus;
}
このイベントが正しく配線され、正しく起動し、テキスト ボックスの Enabled ステータスが正しく設定されていることは 100% 確信しています。これを上書きする可能性のあるコードをアンコメントしたメソッドは他にありません。ただし、チェックボックスをクリックした後にフォームが再度読み込まれるとすぐに、テキストボックスは常に有効になります。
EDIT2:誰かが自分の問題でこれに遭遇した場合、ここに私の問題の原因があります:
最終的にこれを追跡するには、新しいフォームをゼロから作成する必要がありました。コンストラクターと FormLoad イベントの両方で InitializeComponent() の呼び出しがあったことが判明しました。基本的に、Disable イベントのみを実行して、同じコントロールを含む新しいフォームを作成しました。Load コードをコピーすると、Disable が機能しなくなりました。