如何只使用一个上下文菜单复制从不同的标签文字

问题描述 投票:2回答:1

我有一个联系人列表中的Windows窗体程序。我已经有用于从DataGridView中复制和粘贴的上下文菜单。 不过,我希望能够右击从上下文菜单标签,然后选择复制,将数据从一个标签复制。 我有10个不同的标签,我不希望所有的人,只是我正确的点击来选择副本之一。

我知道,使用Clipboard.SetText(label1.text)会让我选择特定的标签,但我并不怎么创建10个方面的标签,我应该能够与人做。

如果我想选择所有的文本框,我可以做到这一点。

string UserInfo = $"{lblFirstName.Text}\n" +
                  $"{lblLastName.Text}\n" +
                  $"{lblEmailAddress.Text}\n" +
                  $"{lblPhysicalAddress.Text}\n" +
                  $"{lblCountry.Text}\n" +
                  $"{lblCompany.Text}\n" +
                  $"{lblStatus.Text}\n" +
                  $"{lblFirstContact.Text}\n" +
                  $"{lblLastContact.Text}\n" +
                  $"{lblNotes.Text}\n ";
Clipboard.SetText(UserInfo);

对于在DataGridView很容易。但是,这是用右键点击一个标签做副本。

我创建了一个第二的ContextMenuStrip和应该发生什么:

  1. labelA右键点击
  2. 上下文菜单会弹出副本,并选择它
  3. 系统识别出labelA是正确的点击因此需要从标签的文本。 Clipboard.SetText(labelChosen)
  4. 那么如果用户想单击将选择qazxsw POI。

我只是不希望创建10个上下文菜单做到这一点。

c# winforms label contextmenu
1个回答
2
投票

编辑 - 感谢@Jimi这一建议,通过评论

最简单的解决方案是将labelC控制从工具箱添加到您的表格,并配置一个项目 - “复制”;双击该项目,并在事件处理程序使用下面的代码(假设你的右键菜单条被称为labelContextMenuStrip):

ContextMenuStrip

然后,您可以分配到的ContextMenuStrip每个所需标签的Clipboard.SetText(labelContextMenuStrip.SourceControl.Text); 财产在设计,或以编程方式,在你的窗体的ContextMenuStripLoad事件:

Shown

全码(验证解决方案):

foreach (var label in Controls.OfType<Label>())
{
    label.ContextMenuStrip = labelContextMenuStrip;
}
© www.soinside.com 2019 - 2024. All rights reserved.