【问题标题】:Copy Labels to Clipboard将标签复制到剪贴板
【发布时间】:2013-01-29 21:26:48
【问题描述】:

我需要帮助,我整天都在 Google 上寻找,但到目前为止我还没有找到一篇关于我正在尝试做的事情的文章。我正在使用 SharpDevelop 作为我的 IDE 使用 C# 开发一个小项目,在我的项目的用户界面中,我有几个标签,其中 11 个指示该字段的内容(即“名称:”,“电子邮件:”)其他 11 个将在按下“搜索”按钮并输入关键字后自动填充数据库中的信息。

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

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

【问题讨论】:

标签: c# listview datagrid labels


【解决方案1】:

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

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());
}

【讨论】:

  • 感谢 ByteBlast,我研究了这段代码,我认为我可以让对象单独读取每个标签,为什么要这样做?因为我还有几个文本框、一个组合框和 2 个需要阅读的富文本框,
【解决方案2】:

如果您使用的是 Windows 窗体,则可以使用 ContextMenuStrip,方法是命名一个选项“复制”,然后将命名的 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 单个标签,请使用 ContextMenuStrip 上的第二个选项并使用以下内容:

Clipboard.SetText(labelContextMenuStrip.SourceControl.Text);

请参阅以下内容: https://stackoverflow.com/a/53263702/7444103 C# How to copy text from different labels using only one context menu when right click

这是在 @CoolBots 和 @Jimi 的帮助下完成的。

【讨论】:

    猜你喜欢
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 2020-02-06
    相关资源
    最近更新 更多