将标签复制到剪贴板

本文关键字:剪贴板 复制 标签 | 更新日期: 2023-09-27 17:56:29

我需要帮助,我一直在谷歌上寻找,到目前为止,我还没有找到一篇关于我想做的事情的文章。 我正在使用 SharpDevelop 作为我的 IDE 在 C# 中处理一个小项目,在我的项目的用户界面中,我有几个标签,其中 11 个指示字段的内容(即"名称:", "电子邮件:"),另外 11 个将在按下搜索按钮并输入关键字后自动填充数据库中的信息。

我需要做的是将所有标签复制到剪贴板上,以便复制的信息可以在另一个程序中使用 - 我在 Excel 中有这个相同的应用程序,它可以做我想要的,但我需要更多的多功能性,所以我决定在 C# 上试一试。

有没有办法在 C# 中完成此操作? 我遇到了ListView和DataGrids,我考虑过将标签复制到ListView(作为替代方案,如果可能的话),以便我可以从ListView复制信息,但格式例如:姓名:蒂姆·特纳

将标签复制到剪贴板

将所有输出控件放在一个面板中(或以您认为最好的方式标识它们),然后可以使用以下代码:

StringBuilder clipboard = new StringBuilder();
foreach (Label label in outputPanel.Controls.OfType<Label>())
    clipboard.Append(label.Text + "'n");
Clipboard.SetText(clipboard.ToString());

更新

我的理解是,您只想复制一系列复选框的值,这就足够了。如果您不想循环访问控件集合,而是手动将值附加到剪贴板,您需要做的就是,正是如此。

private void SetClipboard()
{
    StringBuilder clipboard = new StringBuilder();
    clipboard.Append(label1.Text + "'n");
    clipboard.Append(label2.Text + "'n");
    clipboard.Append(textBox1.Text);
    Clipboard.SetText(clipboard.ToString());
}

如果您使用的是Windows窗体,则可以使用ContextMenuStrip,方法是将选项命名为"copy",然后将命名的ContextMenuStrip应用于每个显示ContextMenuStrip的标签选项

    private void copyUserInfoToolStripMenuItem_Click(object sender, EventArgs e)
    {
        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);
    }

如果要选择 FOR 单个标签,请使用上下文菜单条上的第二个选项,并使用以下选项:

Clipboard.SetText(labelContextMenuStrip.SourceControl.Text);

请参阅以下内容:https://stackoverflow.com/a/53263702/7444103C# 右键单击时如何使用一个上下文菜单从不同的标签复制文本

这是在@CoolBots和@Jimi的帮助下进行的。