2016-06-21 16 views
0

私のプログラムに少し問題があります。私は現在フレンドリクエストスクリプトをプログラミングしています。基本的にユーザーがフレンドリクエストを受け取ると、それは自動的にFlowLayoutPanelに追加され、各フレンドリクエストにはユーザーの名前が承諾と拒否ボタンと共に表示されます。ここでは、コードがあります:c#ボタンIdを設定して後で削除するにはどうすればよいですか?

それはどのようなものか
foreach (object request in i.ToString()) 
{ 
    Label userName = new Label(); 
    Button accept = new Button(); 
    Button reject = new Button(); 
    accept.Click += Accept_Click; 
    reject.Click += Reject_Click; 
    userName.Text = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(dr["UserFirstName"].ToString() + " " + dr["UserLastName"].ToString()); 
    accept.Text = "Accept"; 
    reject.Text = "Reject"; 
    friendRequestPanel.Controls.Add(userName); 
    friendRequestPanel.Controls.Add(accept); 
    friendRequestPanel.Controls.Add(reject); 
} 

:今の問題は、ユーザーが要求を受け入れるか拒否のいずれかの場合には、 GUI

、ラベルやボタンのすべてを削除しているようです。 コード:

friendRequestPanel.Controls.Remove(UserName); // Label 
friendRequestPanel.Controls.Remove(accept); // Button 
friendRequestPanel.Controls.Remove(rejects); // Button 

私は後でそれを削除することができますので、私は各ボタンやラベルにIDを割り当てるだろうか? 次のようなもの:friendRequestPanel.Controls.Remove(username[ID No]);

+0

ディクショナリに参照を重複して格納することができます。削除する場合は、ディクショナリから参照を取得して適切なインスタンスを要求します。明らかに、それも辞書から削除することを忘れないでください。 –

+0

IDを取得したい場合は、Tagプロパティを使用して、friendRequestPanel.Controlsで適切なものを検索して、削除する参照を取得できます。 –

+0

['Name'](https://msdn.microsoft.com/en-us/library/system.windows.forms.control.name(v = vs.110).aspx)プロパティは、このような用途に使用します。あなたはコントロールする名前をつけて、その名前を使ってその親の 'Controls'コレクションで見つけることができます。 –

答えて

0

これらのボタンのコントロールを作成し、それらを動的に作成する必要があります。それらをList<MyControl>に保管し、必要に応じてコントロールを取り外します。あなたはそれらを「グループ化」したいからです。

0

コードを簡略化するためにコードを少し変更しました。あなたはそれが有用であることを願っています。

 string[] tags = new string[] { "A", "B", "C" }; 

     foreach (string request in tags) 
     { 
      Label userName = new Label(); 
      userName.Name = request; 
      Button accept = new Button(); 
      accept.Name = request; 

      Button reject = new Button(); 
      reject.Name = request; 

      userName.Text = request; 
      accept.Text = "Accept"; 
      reject.Text = "Reject"; 
      friendRequestPanel.Controls.Add(userName); 
      friendRequestPanel.Controls.Add(accept); 
      friendRequestPanel.Controls.Add(reject); 
     } 

     // Just remove the "B"s 
     friendRequestPanel.Controls.RemoveByKey("B"); 

明らかに、これはあなたがしたいことに最適なアプローチではありません。しかし、あなたの問題を解決します。

+0

文字列(タグ)ではなくintをどのように使用しますか? – richardj97

+0

できません。 NameはStringプロパティです。 integer.ToString()メソッドを呼び出すと、整数を文字列に変換できます。明らかに、削除しようとする前にあなたが探しているintを文字列に変換することを忘れないでください。 –

関連する問題