不能从datagridview复制粘贴

我有一个简单的空白窗体作为一个testing项目和一个datagridview和一个查询来填充datagridview

在这个testing项目中。 我可以突出显示所有的列和行

点击CTRL + C

打开excel

然后点击ctrl + V

和数据在那里。

但是我从公司的某个人那里inheritance了一个程序,我有一个类似的数据网格视图。 但我不能复制粘贴

我怎么能确定这里有什么区别? 我检查testing项目和我inheritance的程序的数据网格视图属性。 两者具有相同的以下内容:1.只读= false 2. copyclipboardmode = EnableWithAutoHeaderText

还有什么可以阻止我复制粘贴这个值?

在inheritance的程序中复制粘贴的唯一方法是双击单元格并复制,但是。 这限制了我一次只复制一个单元,而不是多个单元

请指教?

谢谢

这是我的testing项目的代码片段

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load DataGridView1.Rows.Add(New String() {"TEST", "TEST2", "TEST3"}) DataGridView1.Rows.Add(New String() {"TEST", "TEST2", "TEST3"}) DataGridView1.Rows.Add(New String() {"TEST", "TEST2", "TEST3"}) DataGridView1.Rows.Add(New String() {"TEST", "TEST2", "TEST3"}) DataGridView1.Rows.Add(New String() {"TEST", "TEST2", "TEST3"}) DataGridView1.Rows.Add(New String() {"TEST", "TEST2", "TEST3"}) DataGridView1.Rows.Add(New String() {"TEST", "TEST2", "TEST3"}) End Sub 

这是QuickDanger要求的frmForm.Designer.vb

  <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ Partial Class frmForm Inherits System.Windows.Forms.Form 'Form overrides dispose to clean up the component list. <System.Diagnostics.DebuggerNonUserCode()> _ Protected Overrides Sub Dispose(ByVal disposing As Boolean) Try If disposing AndAlso components IsNot Nothing Then components.Dispose() End If Finally MyBase.Dispose(disposing) End Try End Sub 'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. <System.Diagnostics.DebuggerStepThrough()> _ Private Sub InitializeComponent() Me.dgvSpecials = New System.Windows.Forms.DataGridView() Me.btnCreate = New System.Windows.Forms.Button() Me.PartCode = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.PDF = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.SLDDRW = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.SLDPRT = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.BasePartCode = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.TEMPLATESLDDRW = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.TEMPLATESLDPRT = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.TEMPLATEDRWFILE = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.TEMPLATEPRTFILE = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.MakeSpecial = New System.Windows.Forms.DataGridViewCheckBoxColumn() CType(Me.dgvSpecials, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'dgvSpecials ' Me.dgvSpecials.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize Me.dgvSpecials.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.PartCode, Me.PDF, Me.SLDDRW, Me.SLDPRT, Me.BasePartCode, Me.TEMPLATESLDDRW, Me.TEMPLATESLDPRT, Me.TEMPLATEDRWFILE, Me.TEMPLATEPRTFILE, Me.MakeSpecial}) Me.dgvSpecials.Dock = System.Windows.Forms.DockStyle.Fill Me.dgvSpecials.Location = New System.Drawing.Point(0, 0) Me.dgvSpecials.Name = "dgvSpecials" Me.dgvSpecials.Size = New System.Drawing.Size(917, 246) Me.dgvSpecials.TabIndex = 0 ' 'btnCreate ' Me.btnCreate.Dock = System.Windows.Forms.DockStyle.Bottom Me.btnCreate.Location = New System.Drawing.Point(0, 246) Me.btnCreate.Name = "btnCreate" Me.btnCreate.Size = New System.Drawing.Size(917, 30) Me.btnCreate.TabIndex = 1 Me.btnCreate.Text = "Create" Me.btnCreate.UseVisualStyleBackColor = True ' 'PartCode ' Me.PartCode.HeaderText = "Part Code" Me.PartCode.Name = "PartCode" Me.PartCode.ReadOnly = True Me.PartCode.Width = 200 ' 'PDF ' Me.PDF.HeaderText = "PDF" Me.PDF.Name = "PDF" Me.PDF.ReadOnly = True ' 'SLDDRW ' Me.SLDDRW.HeaderText = "SLDDRW" Me.SLDDRW.Name = "SLDDRW" Me.SLDDRW.ReadOnly = True ' 'SLDPRT ' Me.SLDPRT.HeaderText = "SLDPRT" Me.SLDPRT.Name = "SLDPRT" Me.SLDPRT.ReadOnly = True ' 'BasePartCode ' Me.BasePartCode.HeaderText = "Base Part" Me.BasePartCode.Name = "BasePartCode" Me.BasePartCode.ReadOnly = True ' 'TEMPLATESLDDRW ' Me.TEMPLATESLDDRW.HeaderText = "DRW Template" Me.TEMPLATESLDDRW.Name = "TEMPLATESLDDRW" Me.TEMPLATESLDDRW.ReadOnly = True ' 'TEMPLATESLDPRT ' Me.TEMPLATESLDPRT.HeaderText = "PRT Template" Me.TEMPLATESLDPRT.Name = "TEMPLATESLDPRT" ' 'TEMPLATEDRWFILE ' Me.TEMPLATEDRWFILE.HeaderText = "Column1" Me.TEMPLATEDRWFILE.Name = "TEMPLATEDRWFILE" Me.TEMPLATEDRWFILE.ReadOnly = True Me.TEMPLATEDRWFILE.Visible = False ' 'TEMPLATEPRTFILE ' Me.TEMPLATEPRTFILE.HeaderText = "Column1" Me.TEMPLATEPRTFILE.Name = "TEMPLATEPRTFILE" Me.TEMPLATEPRTFILE.ReadOnly = True Me.TEMPLATEPRTFILE.Visible = False ' 'MakeSpecial ' Me.MakeSpecial.HeaderText = "MakeSpecial" Me.MakeSpecial.Name = "MakeSpecial" ' 'frmForm ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.ClientSize = New System.Drawing.Size(917, 276) Me.Controls.Add(Me.dgvSpecials) Me.Controls.Add(Me.btnCreate) Me.Name = "frmForm" Me.Text = "frmForm" CType(Me.dgvSpecials, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) End Sub Friend WithEvents dgvSpecials As System.Windows.Forms.DataGridView Friend WithEvents btnCreate As System.Windows.Forms.Button Friend WithEvents PartCode As System.Windows.Forms.DataGridViewTextBoxColumn Friend WithEvents PDF As System.Windows.Forms.DataGridViewTextBoxColumn Friend WithEvents SLDDRW As System.Windows.Forms.DataGridViewTextBoxColumn Friend WithEvents SLDPRT As System.Windows.Forms.DataGridViewTextBoxColumn Friend WithEvents BasePartCode As System.Windows.Forms.DataGridViewTextBoxColumn Friend WithEvents TEMPLATESLDDRW As System.Windows.Forms.DataGridViewTextBoxColumn Friend WithEvents TEMPLATESLDPRT As System.Windows.Forms.DataGridViewTextBoxColumn Friend WithEvents TEMPLATEDRWFILE As System.Windows.Forms.DataGridViewTextBoxColumn Friend WithEvents TEMPLATEPRTFILE As System.Windows.Forms.DataGridViewTextBoxColumn Friend WithEvents MakeSpecial As System.Windows.Forms.DataGridViewCheckBoxColumn End Class 

这里是实际的frmForm.VB SldWorks是SolidWorks.Interop.sldworks的成员

 Imports SolidWorks.Interop.sldworks Public Class frmForm Dim App As SldWorks Public Sub Setup(App As SldWorks, Arr As ArrayList) End Sub Private Sub btnCreate_Click(sender As Object, e As EventArgs) Handles btnCreate.Click End Sub End Class 

我猜你必须将DataGridView的MultiSelect属性设置为true

我想你已经将ClipboardCopyMode设置为Disable 。 将此属性更改为其他三个可用选项。

其他开发人员在他的项目中使用Ctrl + C作为快捷键。 如果你能检查他的devise,请通过Menubar-> ShortcutKeys属性

它看起来像其他人已成功ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText (看到这个问题 )。 如果这没有帮助,你可以粘贴dataGridView的devise器代码? (它在项目文件[formname] .Designer.vb中find)

您可能还需要search代码以查找对该控件的引用,并validation原始开发人员在运行时ClipboardCopyMode属性。

编辑:因为没有任何build议似乎工作,你可以使用制表符分隔的格式“滚动自己的”版本的复制/粘贴:

注意:这将复制所有数据,而不仅仅是选定的单元格,但可以修改它以仅执行选定的单元格。

 Private Sub DataGridView1_KeyUp(sender As Object, e As KeyEventArgs) Handles DataGridView1.KeyUp If e.KeyCode = Keys.C AndAlso e.Control Then Dim sb = New StringBuilder() ' If you want the headers, keep these two lines Dim headers = DataGridView1.Columns.Cast(Of DataGridViewColumn)() sb.AppendLine(String.Join(vbTab, headers.[Select](Function(column) Convert.ToString(column.HeaderText)).ToArray())) For Each row As DataGridViewRow In DataGridView1.Rows Dim cells = row.Cells.Cast(Of DataGridViewCell)() sb.AppendLine(String.Join(vbTab, cells.[Select](Function(cell) Convert.ToString(cell.Value)).ToArray())) Next My.Computer.Clipboard.SetText(sb.ToString) End If End Sub 

解决:这个问题是由于solidWorks.Interop.sldworks和应用程序在Solidworks环境中

我从其他solidworks开发人员那里听说ctrl C只是拒绝工作