从dataGridView创建一个Excel文件
我在WindowsForms中有一个DataGridView.我想要一个按钮将此DataGridView导出到Excel工作表. using Excel = Microsoft.Office.Interop.Excel; Excel.Application ExcelApp; Excel.Workbook ExcelWorkBook; Excel.Worksheet ExcelWorkSheet; ExcelApp = new Excel.Application(); ExcelWorkBook = ExcelApp.Workbooks.Add(Missing.Value); ExcelWorkSheet = (Excel.Worksheet)ExcelWorkBook.Worksheets.get_Item(1); try { for (int i = 0; i
0 2023-05-24
编程技术问答社区
隐藏许多行时,C#数据网格视图的性能受到影响
我在C#中做了一个DataGradView,它使我能够崩溃和扩展行. 看起来这样: 在启动时,我想折叠所有带有多个条目的客户.就像图片中所示的那样.如果customers is 10.000需要几分钟的时间. 折叠所有客户的代码: int number = 0; int oldnumber = 0; int parent = 0; foreach (CustomDataGridViewRow row in dataGridView1.Rows) { try { number = int.Parse(row.Cells[1].Value.ToString()); if (number != oldnumber && i
0 2023-05-24
编程技术问答社区
DataAdapter.Fill速度太慢
我知道数据纳布特存在性能问题,但是是否有任何方法可能更快?目前,dataAdapter.fill方法在3000个记录上需要5-6秒,这对我的应用程序来说太慢了.如果我删除Fill行并仅执行SQL(使用SQLCE),则需要20毫秒,所以我猜该查询不是问题所在.我已经尝试在数据表上添加BeginLoadData,但这对性能没有任何影响. using (SqlCeConnection con = new SqlCeConnection(conString)) { con.Open(); using (SqlCeDataAdapter dAdapter= new SqlCeDataAdapter()) { using (SqlCeCommand com = new SqlCeCommand(query, con)) { com.Parameters.Add("uname",
0 2023-05-23
编程技术问答社区
用大数据填充DataGridView时性能缓慢
我正在使用BindingSource控制(我尝试将DoubleBuffered属性设置为true,RowHeadersWidthSizeMode disabled,AutoSizeColumnsMode无.但仍然相同的行为. 如何提高网格的性能? 解决方案 如果您有大量的行,例如10,000及以上, 为了避免性能泄漏 - 在数据绑定之前进行以下操作: dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing; // or even better, use .DisableResizing. Most time consuming enum is DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders // set it to false if not needed dataGridVi
0 2023-05-23
编程技术问答社区
在我的两个屏幕中的一个屏幕上,DataGridView的重绘性能非常糟糕
我实际上已经解决了这个问题,但是我正在为后代发布. 我遇到了我的双人监测系统上的datagridview的一个非常奇怪的问题.该问题表现为对控件的极慢(,对于完整重新粉刷的30秒),但仅当它在我的一个屏幕上时.另一方面,重新粉刷的速度很好. 我有一个NVIDIA 8800 GT,最新的非β驱动程序(175.东西).是驱动程序错误吗?由于我必须使用这种特殊的配置,因此我会把它放在空中. (不过,它不会在ATI卡上发生...) 油漆速度与单元素的内容无关,并且自定义图根本无法改善性能 - 即使只是绘画坚固的矩形. 我后来发现,将elementhost(从system.windows.forms.forms.integration namespace)放置在表单上可以纠正问题.它不必混乱;它只需要成为DataGridView所开启的形式的孩子即可.只要可见属性为真. 我不想将.NET 3/3.5依赖性添加到我的应用程序中;我是在运行时(如果可以的话)创建此控件的方法.
0 2023-05-23
编程技术问答社区
从数据网格视图到报告视图中显示数据 C#
我有一个datagridview,我想将数据传递给ReportViewer,因此这样我可以轻松地打印和导出到PDF/Excel. 我该怎么做?还是有其他解决方案可以实现我的目标?谢谢你! :) 解决方案 由于您想将GridView数据传递给ReportViewer,因此您要做的第一件事是检索GridView的数据源,如下所示: BindingSource bs = (BindingSource)GridView1.DataSource;//You should first convert DataSourse into Binding Sourse DataTable dt = (DataTable) bs.DataSource; //Get GridView data source to Data table 现在,您在 DataTable DT 中获得了GridView数据,您可以将ReportViewer绑定到DataTable,如下所示: ReportVi
0 2023-05-22
编程技术问答社区
复制和粘贴到DataGridView的单元格中(C#)。
我需要能够从一个应用程序(使用普通复制命令)中复制一个名称或名称,然后能够双击DataGridView中的文本单元格以将数据粘贴到网格单元格中.关于如何实现这一目标的任何想法?我正在尝试最大程度地减少此功能的键盘使用. 解决方案 这实际上比您预期的要容易. 在您的datagridview中创建一个celldoubleclick事件,并在此处放置代码: private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = Clipboard.GetText(); } 其他解决方案 您应该将事件Handler连接到单元点事件上,并通过Clipboard.GetText()的数据替换单元格中的文本. 其他解决方案 我已经写了这篇文
4 2023-05-21
编程技术问答社区
数据网格视图。通过值传递还是引用?
我认为DataGridView是记忆猪.通过值datagridView或参考来通过值更好?甚至应该通过吗? 解决方案 通过值或参考将其传递给内存站点并不重要,因为DataGridView是参考类型,而不是值类型. 其他解决方案 类型DataGridView是一种参考类型,因此不可能按值传递对象.您可以按值将参考传递给对象,但这是一个很小的(通常是指针尺寸)的值. 其他解决方案 要添加到约瑟夫的答案中,所有通过值都通过它在调用方法堆栈帧中创建一个新变量,然后将datagridview对象的地址(在堆中)复制到该变量中用于使用称为方法.所有这些都是防止调用方法将新的DataGridView对象分配给 呼叫者中的变量 (调用方法),从而更改 DataGridView呼叫者将指向.
4 2023-05-20
编程技术问答社区
划线的文本到DataTable
我有一个要在datagridview(DGV)中加载的选项卡划界文件;为此,我正在使用以下代码: DataTable dt = new DataTable(); using (FileStream stream = File.OpenRead("logs.txt")) { using (StreamReader reader = new StreamReader(stream)) { string line = reader.ReadLine(); while (line != null) { string[] items = line.Split('\t'); line = reader.ReadLine(); if (dt.Columns.Count == 0) { for (int
2 2023-05-20
编程技术问答社区
DataGridView-父子数据库关系-更新子DataGridView数据
有人会协助我处理以下内容吗?我有两个datagridview对象,每个数据都显示一个数据表,其中两个数据表与以下代码相关: DataSet dSet = new DataSet(); DataTable ParentList = ListToDataTable(_listOfAllAlbumObjects); DataTable ChildList = ListToDataTable(_listOfAllTrackObjects); dSet.Tables.AddRange(new DataTable[]{ParentList, ChildList}); DataColumn parentRelationColumn = ParentList.Columns["AlbumId"]; DataColumn childRelationColumn = ChildList.Columns["AlbumId"]; dSet.Relations.Add("ParentToChild", pa
4 2023-05-19
编程技术问答社区
Winforms: 什么决定了停靠是否会移动其他控件
例如,在一个选项卡中,我有一个datagridview,该数据杂志被停靠了"填充".如果我将USERCORTROL的码头属性设置为"右"位置,则DataGridView会按预期移动.如果我用面板或标签替换USERCONTROL(也将停靠在TabPage中的"右"),那么DataGridView就不会空间.面板或标签仅覆盖DataGridView.我尝试了stackoverflow,并进行了一些阅读,但尚未看到任何规则(尚未).谢谢. 解决方案 他们的z订单.您可以将其前进并移至背景菜单项,右键单击控件以查看菜单. 使用View +(其他Windows) +文档轮廓窗口时,它会更加清晰,它将它们列在其容器下方的Z order中.并允许您拖动+放置控件以更改其顺序,您会立即在设计人员中看到效果.
2 2023-05-19
编程技术问答社区
在数据网格视图中添加一个面板
我想将面板放入列中,其中包含一组控件到datagridview中. 我该怎么办?因为标准方法允许添加复选框,按钮,Combobox等,但我找不到如何放置简单面板. 感谢您的任何帮助 解决方案 面板控件也是从控制类继承的,因此您可以像任何其他控件 一样添加它 以下是我在一个项目之一中使用的代码. private void Form5_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("name"); for (int j = 0; j
0 2023-05-19
编程技术问答社区
关于DataGridView和滚动位置的问题
我在面板内有一个datagridview控件.面板的大小是固定的,并启用了自动滚动.问题在于,在完成编辑单元格之后(通过按Enter或单击另一个单元格),面板的两个滚动(水平和垂直线都被重置为启动位置).这非常不便.如何修复? 解决方案 为什么在面板中使用datagridview? DataGridView有自己的滚动条. 如果您必须在面板中使用它,请将自动滚动设置为禁用和dock datagridView.
0 2023-05-19
编程技术问答社区
如何以像素为单位滚动DataGridView
我的原始方法是将我的datagridview包装在面板中,将其高度设置在面板边界之外,然后更改控制面板的滚动条位置.但是,我刚刚发现,我的DataGridView内部的行数将达到2000年,这迫使我至少将DataGridView尺寸缩小到: : 65px(行高)x 2,000 = 130,000px. 我的64位计算机上数据杂志控件的最大允许大小为65,535.有人可以想到解决这个问题的方法吗? 解决方案 嗯,不,您不能双向. 65535像素的尺寸限制不是人为的,这是操作系统中的硬烘烤限制.根本原因是 HIWORD指定滚动框的当前位置,如果Loword为SB_ThumbPosition或sb_thumbtrack HiWord是该值的上部16位,Loword是下部16位.只能提供0 .. POW(2,16)-1 = 0..65535.在其他地方可以看到此限制,如果您将其塞满超过(65535 +可见)项目,则列表框不当行为.您不能再滚动到底部. 听起来像
8 2023-05-19
编程技术问答社区
当DataGridViewComboBox的选定索引改变时,我如何立即改变行的颜色?
我正在使用Windows表单,并具有带有数据源的DataGridViewComboboxColumn的DataGridView. 当用户选择与组合框不同的项目时,我想立即更改行颜色以指示此新选择. 我已经测试了几个事件,例如CellValueChanged和RowPrepaint,但是这些事件要求用户在进行选择后单击行. 似乎该行没有立即更新.相反,它在用户单击行之后会更新. (即,这是大多数网格的工作方式,但我想更改此行为并立即提供反馈) 解决方案 您可以使用DataGridView的EditingControlShowing事件,并为ComboBox.SelectedIndexChanged事件添加事件处理程序: private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { Combo
4 2023-05-16
编程技术问答社区
DataGridView重写了我的自定义行绘画
我正在按照MSDN上的示例使用RowPrepaint事件来自定义我的行. 我只想自定义一些行,而不是全部.我也有一种交替的行样式. 当我踏上调试器时,我能够根据MSDN中的示例(一个微妙的梯度)观看该程序对行进行绘画,但是一旦rowprepaint Event Event Eventer Handler返回程序,请根据其默认样式重新粉刷了该行, . 如何保持自定义绘画风格? 解决方案 设置DataGridViewRowPrePaintEventArgs.Handled = true void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) { e.Handled =true; }
0 2023-05-16
编程技术问答社区
数据网格视图在最后一列标题后出现空白
我正在尝试模仿其他所有表格视图对DataGridView控件的作用,但是我似乎无法使标头正确. 我想要一个空白的标题,所有标头的右侧都不会移动,实际上不是标题.有没有办法沿顶部绘制默认标头? 基本上,这是我的问题: 解决方案 尝试此 Dim dt As New DataTable() dt.Columns.Add("a") dt.Columns.Add("b") dt.Rows.Add(dt.NewRow()) dt.Rows.Add(dt.NewRow()) dt.Rows.Add(dt.NewRow()) dt.Rows.Add(dt.NewRow()) dt.Rows.Add(dt.NewRow()) dt.Rows.Add(dt.NewRow()) dt.Columns.Add(" ") dt.AcceptChanges() DataGridView1.DataSource = dt DataGridView1.AutoSize = True DataG
4 2023-05-16
编程技术问答社区
如何提高DataGridView的绘画性能?
(对不起,英语不好) 我有一个大 DataGridView的性能. 我正在使用DataGridView从外部应用程序流中显示日志.来自流的消息以高频(小于1 ms)出现.如果我立即将新行添加到每条新消息时,DataGridView没有时间在下一条消息到来之前重新绘制自己. . 一个可能的解决方案是使用队列收集消息,并每100毫秒重新绘制DataGridView带有队列的消息.这很好,但是DataGridView自动滚动到最后一行时会闪烁. (禁用平滑滚动) 您能帮我改善DataGridView绩效吗? 解决方案 我最近有一些DataGridView>的缓慢问题,解决方案是以下代码 public static void DoubleBuffered(this DataGridView dgv, bool setting) { Type dgvType = dgv.GetType(); PropertyInfo pi = dgvType
10 2023-05-16
编程技术问答社区
C#-从MySQL中检索数据并在 "页面 "中排序,不需要DataGridView
我是C#编程中的新手,我正在开始创建一个应用程序,该应用程序显示(现实生活)"事件"通过进度键到期. 所有信息.关于这些事件,存储在数据库中;因此,打开与My-SQL数据库的连接,我可以检索所有事件. 问题是我不知道该数据库中存储了多少事件(因为一天我可以进行20个事件,而在另一个事件中,我可以拥有其他40个事件),而我的Form1无法根据事件的数量进行调整大小. . 因此,我需要制作一个页面系统,以限制每个页面中打印的事件. 在Google上以及在此站点上搜索,我看到在C#中制作页面的最简单方法是使用DataGridView,但我无法使用它,因为我需要进度键才能查看事件何时到期. 因此,我认为使用mySQL的限制数据选择来解决此问题:SELECT * from EVENTS LIMIT x,y;其中x和y是两个变量,并且它们会根据几个按钮更改;按钮1(第一页)x和y为0和20,在按钮2(第二页)x和y为20,40,依此类推. 但这是行不通的,因为x和y每次刷新form1时都会重置.
0 2023-05-16
编程技术问答社区
在windows窗体中把DataGridView绑定到一个列表<List<T>>上
我有一个自定义对象的集合,其中t的格式列表列表,即自定义对象列表. 我需要将此集合绑定到Windows表单中的DataGridView控件,并且页数应等于外部列表中的内部列表数量.每个页面都应绑定到内部列表,即T的列表. 知道如何实现这一目标? 解决方案 假定您的嵌套列表已被填充,除了您的DataGridView外,您的表单还具有Previous>> and Next按钮用于更改页面:您可以使用按钮更改索引指示哪个嵌套列表应用作DataSource. public List> Pages { get; set; } // Populated elsewhere... public int PageIndex { get; set; } private void ChangePage() { this.PreviousButton.Enabled = this.PageIndex > 0; this.NextButton.Enabled
0 2023-05-16
编程技术问答社区