Como: Habilitar usuários para copiar várias células para a área de transferência de Windows Forms DataGridView controle
Quando você habilita a célula copiando, tornar os dados no seu DataGridView controle com com facilidade acessível para outros aplicativos através de Clipboard. sistema autônomo valores das células selecionadas são convertidos em seqüências de caracteres e adicionados à área de transferência sistema autônomo valores de texto delimitado por tabulações para colagem em aplicativos sistema autônomo o bloco de notas e o Excel e sistema autônomo uma tabela formatada em HTML para colagem em aplicativos sistema autônomo palavra.
Você pode configurar a célula copiar para copiar apenas valores de célula, para incluir o texto do cabeçalho da linha e coluna nos dados da área de transferência ou para incluir texto de cabeçalho somente quando os usuários selecionam linhas ou colunas inteiras.
Dependendo do modo de seleção, os usuários podem selecionar vários grupos desconectados de células.Quando um usuário copiar células para a área de transferência, linhas e colunas com nenhuma célula selecionada não são copiadas.Todas as linhas ou colunas se tornam linhas e colunas na tabela de dados copiados para a área de transferência.Células não selecionadas nessas linhas ou colunas são copiadas sistema autônomo espaços reservados em branco para a área de transferência.
Para habilitar cópia da célula
Defina a propriedade DataGridView.ClipboardCopyMode.
Me.DataGridView1.ClipboardCopyMode = _ DataGridViewClipboardCopyMode.EnableWithoutHeaderText
this.DataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
Exemplo
O exemplo de código completo a seguir demonstra como células serão copiadas para a área de transferência.Este exemplo inclui um botão que copia as células selecionadas para a área de transferência usando o DataGridView.GetClipboardContent método e exibe o Sumário da área de transferência em uma caixa de texto.
Imports System
Imports System.Windows.Forms
Public Class Form1
Inherits Form
Private WithEvents DataGridView1 As New DataGridView()
Private WithEvents CopyPasteButton As New Button()
Private TextBox1 As New TextBox()
<STAThreadAttribute()> _
Public Shared Sub Main()
Application.Run(New Form1())
End Sub
Public Sub New()
Me.DataGridView1.AllowUserToAddRows = False
Me.DataGridView1.Dock = DockStyle.Fill
Me.Controls.Add(Me.DataGridView1)
Me.CopyPasteButton.Text = "copy/paste selected cells"
Me.CopyPasteButton.Dock = DockStyle.Top
Me.Controls.Add(Me.CopyPasteButton)
Me.TextBox1.Multiline = True
Me.TextBox1.Height = 100
Me.TextBox1.Dock = DockStyle.Bottom
Me.Controls.Add(Me.TextBox1)
Me.Text = "DataGridView Clipboard demo"
End Sub
Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load
' Initialize the DataGridView control.
Me.DataGridView1.ColumnCount = 5
Me.DataGridView1.Rows.Add(New String() {"A", "B", "C", "D", "E"})
Me.DataGridView1.Rows.Add(New String() {"F", "G", "H", "I", "J"})
Me.DataGridView1.Rows.Add(New String() {"K", "L", "M", "N", "O"})
Me.DataGridView1.Rows.Add(New String() {"P", "Q", "R", "S", "T"})
Me.DataGridView1.Rows.Add(New String() {"U", "V", "W", "X", "Y"})
Me.DataGridView1.AutoResizeColumns()
Me.DataGridView1.ClipboardCopyMode = _
DataGridViewClipboardCopyMode.EnableWithoutHeaderText
End Sub
Private Sub CopyPasteButton_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles CopyPasteButton.Click
If Me.DataGridView1.GetCellCount( _
DataGridViewElementStates.Selected) > 0 Then
Try
' Add the selection to the clipboard.
Clipboard.SetDataObject( _
Me.DataGridView1.GetClipboardContent())
' Replace the text box contents with the clipboard text.
Me.TextBox1.Text = Clipboard.GetText()
Catch ex As System.Runtime.InteropServices.ExternalException
Me.TextBox1.Text = _
"The Clipboard could not be accessed. Please try again."
End Try
End If
End Sub
End Class
using System;
using System.Windows.Forms;
public class Form1 : Form
{
private DataGridView DataGridView1 = new DataGridView();
private Button CopyPasteButton = new Button();
private TextBox TextBox1 = new TextBox();
[STAThreadAttribute()]
public static void Main()
{
Application.Run(new Form1());
}
public Form1()
{
this.DataGridView1.AllowUserToAddRows = false;
this.DataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(this.DataGridView1);
this.CopyPasteButton.Text = "copy/paste selected cells";
this.CopyPasteButton.Dock = DockStyle.Top;
this.CopyPasteButton.Click += new EventHandler(CopyPasteButton_Click);
this.Controls.Add(this.CopyPasteButton);
this.TextBox1.Multiline = true;
this.TextBox1.Height = 100;
this.TextBox1.Dock = DockStyle.Bottom;
this.Controls.Add(this.TextBox1);
this.Load += new EventHandler(Form1_Load);
this.Text = "DataGridView Clipboard demo";
}
private void Form1_Load(object sender, System.EventArgs e)
{
// Initialize the DataGridView control.
this.DataGridView1.ColumnCount = 5;
this.DataGridView1.Rows.Add(new string[] { "A", "B", "C", "D", "E" });
this.DataGridView1.Rows.Add(new string[] { "F", "G", "H", "I", "J" });
this.DataGridView1.Rows.Add(new string[] { "K", "L", "M", "N", "O" });
this.DataGridView1.Rows.Add(new string[] { "P", "Q", "R", "S", "T" });
this.DataGridView1.Rows.Add(new string[] { "U", "V", "W", "X", "Y" });
this.DataGridView1.AutoResizeColumns();
this.DataGridView1.ClipboardCopyMode =
DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
}
private void CopyPasteButton_Click(object sender, System.EventArgs e)
{
if (this.DataGridView1
.GetCellCount(DataGridViewElementStates.Selected) > 0)
{
try
{
// Add the selection to the clipboard.
Clipboard.SetDataObject(
this.DataGridView1.GetClipboardContent());
// Replace the text box contents with the clipboard text.
this.TextBox1.Text = Clipboard.GetText();
}
catch (System.Runtime.InteropServices.ExternalException)
{
this.TextBox1.Text =
"The Clipboard could not be accessed. Please try again.";
}
}
}
}
Compilando o código
Esse código requer:
- Referências aos assemblies N:sistema e N:sistema. Windows. Forms.
Para obter informações sobre como criar este exemplo a partir da linha de comando para Visual Basic ou Visual C#, consulte Criando a partir da linha de comando (Visual Basic) ou Linha de comando criando com csc.exe.Você também pode construir este exemplo no Visual Studio colando o código em um novo projeto.
Consulte também
Referência
Outros recursos
Seleção e uso de área de transferência com o controle DataGridView do Windows Forms