DataGridView选择所有单元格,行标题和列标题进行复制

Mar*_*ata 4 .net c# datagridview winforms

.SelectionModeDataGridView让你选择所有单元格和行标题,或所有的细胞和列标题,但我无法弄清楚如何让用户选择的一切,包括行标题和列标题在同一时间.

我想让用户能够将整个表格(包括列标题)复制并粘贴到另一个文档中,如文本或格式化文本,如Word或电子邮件.它开箱即用,除了你不能得到列标题.

Eva*_*n L 11

我能够实现这一目标的唯一方法是创建ToolStripMenuItem一个ContextMenu控件.

首先,我创建覆盖默认的方法ClipboardCopyModeDataGridView:

    public void CopyToClipboardWithHeaders(DataGridView _dgv)
    {
        //Copy to clipboard
        _dgv.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
        DataObject dataObj = _dgv.GetClipboardContent();
        if (dataObj != null)
            Clipboard.SetDataObject(dataObj);
    }
Run Code Online (Sandbox Code Playgroud)

然后我调用该方法并将其传递GridViewToolStripMenuItem:的click事件:

    private void copyWithHeadersToolStripMenuItem_Click(Object sender, EventArgs e)
    {
        CopyToClipboardWithHeaders(dgv);
    }
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!


Wor*_*ter 6

在Visual Studio 2013中,winforms datagridview具有各种可用于ClipboardCopyMode的枚举.要显示标题文本,用户将使用"EnableAlwaysIncludeHeaderText"枚举. 微软参考

禁用

复制到剪贴板已禁用.

EnableAlwaysIncludeHeaderText

可以将所选单元格的文本值复制到剪贴板.包含所选单元格的行和列包含标题文本.

EnableWithAutoHeaderText

可以将所选单元格的文本值复制到剪贴板.仅当DataGridView.SelectionMode属性设置为RowHeaderSelect或ColumnHeaderSelect并且至少选择了一个标头时,才会为包含所选单元格的行或列包含行或列标题文本.

EnableWithoutHeaderText

可以将所选单元格的文本值复制到剪贴板.标题文本不包括在内.