0

C#Winformsでは、ユーザーが最初にフォームをロードするときに、そのラベルをクリックして、データベースにラベル「テキスト」として入力を取得します。もう一度、別のユーザーがそのフォームをロードした場合、そのラベルを無効にします。どうすればそれを作ることができますか?これはフォームサンプルです

ここに画像の説明を入力してください

これは私が試したものです:

  • ユーザーが複数のラベルをクリックすると、「E10、E9、E8、E7など」という入力文字列が表示されます。
  • 別のユーザーがフォームをロードすると、その文字列を取得し、「、」を使用して文字列を分割し、配列に格納します

    しかし、そのラベルを配列から無効にする方法がわかりません。助けてください。

4

1 に答える 1

1

*強いテキスト*1.- 配列内でループを実行します
2.- ラベルの名前を使用してラベルを見つけます (ラベルの名前は、配列にある入力文字列と同じであると仮定しました)
3 .- コントロールを無効にする

foreach (string name in yourArray)
{
   var matches = this.Controls.Find(name , true);
   ((Label) matches).Enable = False
}

現在、ここにはコンパイラがありません。動作することを願っています。そうでない場合は、ご理解ください。

編集:彼のテキストプロパティでラベルを見つけます:

foreach(Control c in this.Controls)
{
   if(c is Label)
   {
      if((Label) c).Text == "RequiredText")
      {
          // Do stuff here ;
      }
   }
}

ラベルがパネル、グループボックス、またはコンテンツ コントロール内にある場合は、'this' を使用する代わりに contentControl.Controls を使用する必要があることに注意してください。

編集2:わかりました、このコードは私にとってはうまくいきます。「サンプル」というテキストのラベルがあります。

    var myarray = "E1,E2,Sample".Split(',');

    foreach (Control labelcontrol in this.Controls)
    {
        if (!(labelcontrol is Label)) continue;
        foreach (var text in myarray)
        {
            if (labelcontrol.Text == text)
                labelcontrol.Enabled = false;
        }
    }
于 2012-07-01T17:40:04.497 に答える