Tag: datagridview

在datagridview中隐藏指定的单元格边框?

我想隐藏我的datagriview中的一个或两个网格单元格。 但是使用这段代码,所有的网格都被隐藏了,这不是我想要的。 我想隐藏我的Datagridview中的一个或两个矩形单元格。 我不想隐藏包含我的单元格的列或数据。 我只是想隐藏一个特定的细胞。 dataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.None;

使用itextsharp将dataGridView转换为pdf

我在尝试获取dataGridView中特定列的值并将它们添加到PdtPtable时遇到问题。 但是重复了表中添加的值,例如第一行添加了两次。我试图遍历每一行和每行中的每一行。 PdfPTable pdfTable= new PdfPTable(5); foreach(DataGridViewRow row in dataGridView1.Rows) { foreach (DataGridViewCell celli in row.Cells) { try { pdfTable.AddCell(celli.Value.ToString()); } catch { } } doc.Add(pdfTable); }

自定义绘制DatagridViewComboBoxColumn

我正在使用带有DataGridView的DataGridViewComboBoxColumn ,我需要在combobox项目的左侧添加图标。 我目前正在使用EditingControlShowing事件以及ComboBox.DrawItem事件,如下所示: private void pFiles_dgvFiles_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (e.Control is ComboBox) { ComboBox cb = (ComboBox)e.Control; cb.DrawMode = DrawMode.OwnerDrawFixed; cb.DrawItem -= combobox1_DrawItem; cb.DrawItem += combobox1_DrawItem; } } private void combobox1_DrawItem(object sender, DrawItemEventArgs e) { // Drawing icon here } 问题是只有单元格处于编辑模式时才会绘制图标。 一旦我点击单元CellEndEdit某个地方,就会触发CellEndEdit事件并重新绘制单元格(没有图标)。 我尝试使用DataGridView.CellPainting事件来解决此问题,但它导致DataGridViewComboBoxColumn的下拉按钮消失。 在用户完成编辑单元格后如何绘制图标的任何想法?

有时我想隐藏DataGridViewButtonColumn中的按钮

我有一个DataGridView ,它是上一个问题( 链接 )的主题。 但有时Button是null 。 这可以。 但是如果它是null,有没有办法可以选择删除/添加(显示/隐藏?)按钮到按钮的DataGridViewButtonColumn 像这样: +————+————+ | MyText | MyButton | +————+————+ | “do this” | (Yes) | | “do that” | (Yes) | | FYI ‘blah’ | | <—- this is where I optionally want no button | "do other" | (Yes) | +————+————+ 这是我到目前为止所尝试的( 基于此示例 ) private void grdVerdict_CellFormat(object […]

如何使用按钮向DataGridView添加新行

在C#Windows应用程序中,我使用DataGridView来显示所有数据。 我想在用户单击“添加新行”按钮时向网格添加新行。 我怎么能做到这一点?

DataGridView基于枚举链接到带有Combobox列的DataTable

昨天花了很多时间搜索这个,我不得不放弃。 我有一个链接到Datatable的DataGridView。 其中一列是枚举,我希望它显示为Combobox列。 我在DataGridView中找到了这个链接创建下拉列表选项,其中包含使用以下内容的答案… DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn(); col.Name = “My Enum Column”; col.DataSource = Enum.GetValues(typeof(MyEnum)); col.ValueType = typeof(MyEnum); dataGridView1.Columns.Add(col); 我已经尝试了但是当用户创建一个新记录时,从下拉列表中选择一个选项(正确的选项显示)然后离开该字段,他们得到消息“DataGridViewComboBoxCel值无效”。 我在搜索中找到了一些解决方案,讨论如何捕获此错误,然后什么都不做(从而隐藏错误),但我想解决它而不是隐藏它。 如果用户确定了他们得到的消息,则重复另外两次。 我还看到了遍历枚举值的解决方案,并创建了一个包含int和每个字符串的数据表,然后使用数据表作为组合中的数据源。 在使用后端MSSQL数据库时,我曾使用数据表作为combobox的源代码。 另一种变体是循环并直接写入组合这样的… foreach (MyEnum bar in MyEnum.GetValues(typeof(MyEnum))) { string barName = MyEnum.GetName(typeof(MyEnum), bar); MyComboColumn.Items.Add(barName); } 比如在这个链接中的问题。 如何将一些枚举值添加到combobox中 我的问题:可以使用Enum.GetValues(typeof(MyEnum))使其工作; 方法? 数据表方法看起来很长。 然后循环使用MyComboColumn.Items.Add(barName); 也有点长篇大论,并且会导致枚举的字符串版本记录在数据表中而不是整数(我宁愿它是整数)。 我找不到Enum.GetValues(typeof(MyEnum))方法的示例,其中网格链接到数据表。 当我搜索它时,我只是遇到了其他方法。 我认为问题可能在于基础表列上的数据类型。 我已经尝试过这个整数,作为一个字符串,我试过不定义它。 我想不出还有什么可以尝试这种类型。 这是我的简化代码。 (DVG是我表格上的DataGridView)。 enum […]

KeyDown事件 – 如何轻松知道按下的键是否为数字?

我目前正在处理DataGridView控件的KeyDown事件。 其中一列由计算值填充,我希望用户能够在需要时覆盖单元格值。 当用户按下数字键时,单元格进入EditMode并允许用户覆盖该值。 如果密钥不是数字,则没有任何反应…… 这工作得很好……问题是我发现它的代码很难看…我似乎找不到一个简洁的方法来处理单个条件下的所有数字键,所以我做了一个开关case构造来处理所有可能的数字键,如下所示: switch (e.KeyCode) { case Keys.D0: case Keys.D1: case Keys.D2: case Keys.D3: case Keys.D4: case Keys.D5: case Keys.D6: case Keys.D7: case Keys.D8: case Keys.D9: case Keys.Decimal: case Keys.NumPad0: case Keys.NumPad1: case Keys.NumPad2: case Keys.NumPad3: case Keys.NumPad4: case Keys.NumPad5: case Keys.NumPad6: case Keys.NumPad7: case Keys.NumPad8: case Keys.NumPad9: [code to make the cell […]

DataGridViewCheckBoxCell如何在表单加载期间设置时显示检查

我有一个DataGridView,它从DataTable加载数据,以及DataGridViewCheckBoxCells的未绑定列。 将DataGridView中的行与单独的DataTable与用户已保存的值进行比较,如果匹配,则应检查该行的复选框。 以下是比较值并将复选框值设置为“true”的代码: foreach (int j in selectedObjectives) { foreach (DataGridViewRow r in dgvObjectives.Rows) { if (j == Convert.ToInt32(r.Cells[“ObjectiveID”].Value)) { dgvObjectives.CurrentCell = r.Cells[“Select”]; ((DataGridViewCheckBoxCell)r.Cells[“Select”]).Value = true; //dgvObjectives.InvalidateCell(r.Cells[“Select”]); //dgvObjectives.EndEdit(); //dgvObjectives.CommitEdit(DataGridViewDataErrorContexts.Commit); } if (Convert.ToInt32(r.Cells[“ObjectiveID”].Value) == selectedIndex) { r.Selected = true; } } } 当我在窗体加载private void WQMDrill_Load(object sender, EventArgs e)期间调用方法执行此操作时,值设置正确,但复选框不检查。 但是,在表单完成加载后调用时,代码可以正常工作。 不幸的是,我绝对需要在加载过程中检查这些。 我希望我对我的问题很清楚,对此事的任何帮助都将不胜感激。 如您所见,我试图单独使单元格无效,以及整个DataGridView控件。 我也有 private void dgvObjectives_CurrentCellDirtyStateChanged(object […]

如何在DataGridView中建议附加ComboBox?

我在c# Windows窗体应用程序中有一个ComboBox ,我将AutoCompleteMode设置为SuggestAppend ,文本自动附加到输入(图1)。 但是如果我在DataGridView ComboBox中将AutoCompleteMode设置为SuggestAppend ,则它不会附加文本(图2)。 如何在datagridviewcombobox中启用SuggestAppend ? 图。1 : 图2:

C#Winforms DataGridView时间列

如何在DataGridView中显示Time-picker列? 我不需要选择日期。 我只需要时间选择。