2013-04-03 17 views
5

私のwinformでは、すべてのボタンクリックで動的に作成されるusercontrolsがあります。私は実行時にそれらを一度クリックしてCtrlキーを押したままにするだけで、それらを選択できるようにしたい。私はそれをすることができましたが、ただ一つでした。私はどのようにそれらのすべてのために働くことができますか?私のコード:複数選択ctrl +ボタン実行時に

private void TControl_Click(object sender, EventArgs e) //TControl is the name of usercontrol 
    { 
     TControl tc = new TControl(); 
     Control ctrl = sender as Control; 
     if (ctrl != null) 
     tc = ctrl;//it doesn't work like this. 
+1

それはあなたのユーザーコントロールを「選択」するためには何を意味するのでしょうか? –

+0

コントロールをクリックしたときにコントロールが選択されていませんか? –

+1

@ lazyberezovsky 'Control'sは「フォーカス」を得ていますか?しかし、一度に一つだけ。 –

答えて

2

あなたは選択したコントロールのリストを持つことができます。ちょうどあなたがコントロール上でクリックしたときにCtrlキーが押されたかどうかを判断し、(コントロールを前に追加された場合、あなたはまた、それを削除することができます)、選択リストに追加:

List<TControl> selectedControls = new List<TControl>(); 

private void TControl_Click(object sender, EventArgs e) 
{ 
    if ((ModifierKeys & Keys.Control) == 0) 
     return; 

    TControl tc = (TControl)sender; 
    if (selectedControls.Contains(tc)) 
     return; // you can remove control here 

    selectedControls.Add(tc); 
} 
関連する問題