我有一个填充了数据的dataGridView对象.我想点击一个按钮,让它改变单元格背景的颜色.这就是我现在拥有的
foreach(DataGridViewRow row in dataGridView1.Rows)
{
foreach(DataGridViewColumn col in dataGridView1.Columns)
{
//row.Cells[col.Index].Style.BackColor = Color.Green; //doesn't work
//col.Cells[row.Index].Style.BackColor = Color.Green; //doesn't work
dataGridView1[col.Index, row.Index].Style.BackColor = Color.Green; //doesn't work
}
}
Run Code Online (Sandbox Code Playgroud)
所有这三个都会导致表格以重叠的方式重新绘制,并且尝试重新调整表格的大小变得一团糟.单击单元格时,值仍然突出显示,背景颜色不会更改.
问:如何在表存在后更改单个单元格的背景颜色?
我的WinForms应用程序中有一个DataGridView和一个DataGridViewComboBoxColumn.我需要手动下拉(打开)这个DataGridViewComboBoxColumn,比如单击一个按钮后.
我需要这个的原因是我已将SelectionMode设置为FullRowSelect,我需要单击2-3次才能打开组合框.我想点击组合框,它应该立即下拉.我想用CellClick事件做这个,或者还有其他方法吗?
我在Google和VS帮助中搜索,但我还没有找到任何信息.
有人可以帮忙吗?
我正在使用DataGridView控件来显示一些数据.我需要启用一些数据并根据网格中的某些值动态禁用某些数据.
谁能告诉我怎么做?
我想在窗口表单的datagridview中显示每页10条记录,用户必须单击下一步按钮才能显示下10条记录.是否在DataGridview中有一些属性或者我是否需要创建自定义控件.
我需要做些什么来实现这一目标.
我怎样才能避免双击一个DropDownButton用过的DataGridView?现在,我可以DataGridView通过单击两次或更多次来查看其中的下拉项.第一次选择单元格,第二次单击DropDownButton箭头时,它显示列表.如何通过一次点击实现同样的目标?
我有两个datagridviews,当我点击其中一个时,我想在第二个datagridview中取消选择所有选择,我试过这个,但没有任何作用:
firstItemsDataGridView.ClearSelection();
firstItemsDataGridView.CurrentCell = null;
Run Code Online (Sandbox Code Playgroud)
不工作,
firstItemsDataGridView.ClearSelection();
if (firstItemsDataGridView.Rows.Count > 0)
firstItemsDataGridView[1, 0].Selected = true;
firstItemsDataGridView.CurrentCell = null;
firstItemsDataGridView.ClearSelection();
foreach (DataGridViewRow item in firstItemsDataGridView.Rows) {
item.Selected = false;
foreach (DataGridViewCell itemCell in firstItemsDataGridView.Columns) {
itemCell.Selected = false;
}
}
Run Code Online (Sandbox Code Playgroud)
不工作,
firstItemsDataGridView.Rows[0,-1].Selected = true;
Run Code Online (Sandbox Code Playgroud)
不工作.
我已经将选择模式设置为全行选择,我不知道如何实现我的目标.
非常感谢!
我得到了那个例外.
System.InvalidOperationException was unhandled
Message=At least one of the DataGridView control's columns has no cell template.
Source=System.Windows.Forms
StackTrace:
at System.Windows.Forms.DataGridView.CompleteCellsCollection(DataGridViewRow dataGridViewRow)
at System.Windows.Forms.DataGridView.get_RowTemplateClone()
at System.Windows.Forms.DataGridView.RefreshRows(Boolean scrollIntoView)
at System.Windows.Forms.DataGridView.RefreshColumnsAndRows()
at System.Windows.Forms.DataGridView.OnBindingContextChanged(EventArgs e)
at System.Windows.Forms.Control.OnParentBindingContextChanged(EventArgs e)
at System.Windows.Forms.Control.OnBindingContextChanged(EventArgs e)
at System.Windows.Forms.Control.set_BindingContextInternal(BindingContext value)
at System.Windows.Forms.ContainerControl.set_BindingContext(BindingContext value)
at System.Windows.Forms.ContainerControl.get_BindingContext()
at System.Windows.Forms.Control.get_BindingContextInternal()
at System.Windows.Forms.Control.get_BindingContext()
at System.Windows.Forms.DataGridView.DataGridViewDataConnection.SetDataConnection(Object dataSource, String dataMember)
at System.Windows.Forms.DataGridView.set_DataSource(Object value)
at Bloowars_Tools.A1_ResultWnd.A1_ResultWnd_Shown(Object sender, EventArgs e) in D:\Documents\Visual Studio 2010\Projects\Bloowars Tools\Bloowars Tools\A1_ResultWnd.cs:line 72
at System.Windows.Forms.Form.OnShown(EventArgs e)
at System.Windows.Forms.Form.CallShownEvent()
at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj) …Run Code Online (Sandbox Code Playgroud) 我有一个DataGridView我设置的地方DataSource:
taskerEntities te = new taskerEntities();
var OMsMasterDescriptiveIndicators = te.MyTable.Select(x => new lccls {Id = x.Id, name = x.name }).ToList();
MyGrid.DataSource = OMsMasterDescriptiveIndicators;
Run Code Online (Sandbox Code Playgroud)
和我class lccls一样
public class lccls
{
public string Id { get; set; }
public Nullable<decimal> name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在某个事件中,我想让当前行不可见:
MyGrid.Rows[5].Visible = false;
Run Code Online (Sandbox Code Playgroud)
但我无法做到这一点.而是抛出异常,并显示以下错误消息:
与货币经理的头寸相关联的行不能隐藏
我怀疑原因与设置有关DataSource,但为什么呢?
当HeaderText属性的长度达到某个字符限制并且文本中有空格时,WinForms会自动在标题中插入一个链接中断:
我想要的是:
+-----------------------+---
| Measurement Value (%) | ...
+-----------------------+---
Run Code Online (Sandbox Code Playgroud)
我得到了什么:
+-----------------------+---
| Measurement Value | ...
|(%) |
+-----------------------+---
Run Code Online (Sandbox Code Playgroud)
有足够的空间来显示所有标题单元格而不会断行,但无论出于何种原因,即使我设置了AutoSizeModeto,它仍然会被插入HeaderCell.
如何在保持空格的同时防止这些换行HeaderText?
我试图在Visual Studio 2008中使我的DataGridView的列标题变粗.
每次我将ColumnHeadersDefaultCellStyle更改为Calibri 9.75pt粗体时,使用属性框,下次重新打开保存的表单时,ColumnHeadersDefaultCellStyle已恢复为Calibri 9.75而不加粗体.
我的表单的字体是Calibri 9.75,没有粗体,我的默认单元格样式,但我应该能够使用我的ColumnHeader样式覆盖默认单元格样式吗?
我可以通过在显示表单时设置样式来以编程方式解决此问题,但我们希望Visual Studio设计器显示粗体标题,因此我们可以针对由粗体标题文本占用的空间适当地布置列.
此外,实际的设计器文件指定ColumnHeadersDefaultCellStyle是粗体,即使设计器界面说它不是粗体.
dataGridViewCellStyle1.Font = new System.Drawing.Font("Calibri", 9.75F,
System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.receiptDetailView.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
Run Code Online (Sandbox Code Playgroud) datagridview ×10
c# ×6
winforms ×6
.net ×3
backcolor ×1
cell ×1
collections ×1
datasource ×1
dynamic ×1
exception ×1
header ×1
pagination ×1
rows ×1
selection ×1
width ×1