【问题标题】:multi select ctrl+button click at runtime多选 ctrl+button 在运行时单击
【发布时间】:2013-03-24 16:54:10
【问题描述】:

在我的 winform 上,我有在每次单击按钮时动态创建的用户控件。我希望在运行时能够通过单击一次然后按下 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.

【问题讨论】:

  • “选择”你的用户控件是什么意思?
  • 当你点击控件时,它们没有被选中吗?
  • @lazyberezovsky Controls 获得“焦点”,对吧?但一次只有一个。
  • 我的意思是:我希望能够选择多个控件以删除它们,或复制它们等。
  • @Mady 除了您的控件之外,您还必须创建一个自定义列表控件,它将用作您的控件的容器,就像一个用作字符串列表容器的列表框,而不是您的逻辑处理 ctrl 和复制、粘贴等将写入该列表容器控件。

标签: c# winforms select user-controls


【解决方案1】:

您可以拥有选定控件的列表。只需确定单击控件时是否按下了 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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-31
    • 2016-04-14
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    相关资源
    最近更新 更多