我们在DataGridViews中遇到了性能问题,其中重绘速度非常慢并且找到了解决方案这里创建一个派生类型并在控件上启用双缓冲.(由于DoubleBuffered属性受到保护,因此派生类型是必需的)
将DoubleBuffered属性设置为true似乎没有任何缺点.
我是.NET和C#的新手,但我有一个我想要打印的DataGridView.这样做最好的方法是什么?
如何检查是否DataGridView包含"x"列和"x"列?
到目前为止我所有的一切都在下面.
if (Dgv.Columns.Contains("Address") & ....
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在寻找一种格式化DataGridViewTextBoxColumn的方法,以便在数据绑定期间格式化数据表的值.例如,我有一个CompanyName属性,当数据绑定发生时,我需要从CompanyName获取前5个字母.
我可以挂钩不同的DataGridView事件(例如RowsAdded)并遍历所有行并执行操作,但我想找到更复杂的方法来执行此操作.由于我已决定使用数据绑定,因此循环数据并对其进行修改有点违背了数据绑定概念.
我所追求的是,如何做到如下,但添加自定义格式逻辑:
dataGridView1.Columns[colSomeDate.Index].DataPropertyName = "SomeDate";
colSomeDate.DefaultCellStyle.Format = "yyyy";
Run Code Online (Sandbox Code Playgroud)
我想我应该实现IFormatProvider,但我不太明白我应该如何实现它.
dataGridView1.Columns[companyName.Index].DataPropertyName = "CompanyName";
companyName.DefaultCellStyle.FormatProvider = new ShortText(); // ShortText should implement IFormatProvider
Run Code Online (Sandbox Code Playgroud) 这是关于用C#编写的.NET Windows Forms应用程序.我有一个DataGridView连接到数据库.它显示所选表的内容.
现在如果该表中有4行,它将显示4行.在此之后我能够进入5 日在DataGrid视图列.应该避免.现在我必须禁用新行的创建.我该怎么做?
我正在尝试为给定月份的每一天添加N个列:
var daysCount = DateTime.DaysInMonth(DateTime.Now.Year, month);
for (int i = 1; i <= daysCount; i++)
{
dataGridView1.Columns.Add(new DataGridViewColumn() { HeaderText = i.ToString() });
}
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
至少有一个DataGridView控件的列没有单元格模板.
我正在创建一个DataGridView带有复选框列和文本列的简单(后面会有更多列,但这是我正在努力工作的最小工作示例).当我运行此代码时,会出现复选框列,但我无法选中复选框.
DataGridViewCheckBoxColumn checkColumn = new DataGridViewCheckBoxColumn();
checkColumn.ThreeState = false;
checkColumn.Width = 20;
MyDataGridView.Columns.Add(checkColumn);
MyDataGridView.Columns.Add(new DataGridViewTextBoxColumn());
Run Code Online (Sandbox Code Playgroud)
由于在这种情况下没有出现任何内容,我想添加一些虚拟数据.
for (int i = 0; i < 10; i++)
{
MyDataGridView.Rows.Add(new Object[] { true, "test"});
}
Run Code Online (Sandbox Code Playgroud)
通常情况下,DataGridView会填充自定义对象,就像在列表数据绑定我的这个问题,但我认为这将是更好的在移动之前获得的基本方法这方面的工作.
我不是试图以编程方式设置检查状态,而是让用户选择然后在各种其他事件处理程序中使用该选择.
我在Datagridview中有这样的表:
Name Money
-------------
Hi 100 //here Combobox with member {10,30,80,100} to choose
Ki 30 //here Combobox with member {10,30,80,100} to choose
Run Code Online (Sandbox Code Playgroud)
我想从组合框中更改列"Money"值
我试过这个,但不知道进一步:
DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(String));
dt.Columns.Add("Money", typeof(String));
dt.Rows.Add(new object[] { "Hi", 100});
dt.Rows.Add(new object[] { "Ki", 30});
DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
var list11 = new List<string>() { "10", "30", "80", "100" };
column.DataSource = list11;
column.ValueMember = "Money";
dataGridView1.Columns.Add(column);
Run Code Online (Sandbox Code Playgroud) 我正在尝试将数据逐行添加到datagridview这里是我的代码,它说:"索引超出范围.必须是非负数且小于集合参数名称的大小:index"是什么这意味着 ?在我的代码中有任何问题
String Sqlstr2 = "select ItemName from Item where ItemID = '" + tbItemID.Text + "'";
db.DataRead(Sqlstr2);
string ItemName = db.dr["ItemName"].ToString();
DataGridView dataGridView1 = new DataGridView();
dataGridView1.Columns[0].Name = "ItemID";
dataGridView1.Columns[1].Name = "ItemName";
dataGridView1.Columns[2].Name = "Qty";
dataGridView1.Columns[3].Name = "UnitPrice";
dataGridView1.Columns[4].Name = "Amount";
string firstColum = tbItemID.Text;
string secondColum = ItemName;
string thirdColum = tbQuantity.Text;
string fourthColum = Convert.ToString(UnitPrice);
string fifthColum = Convert.ToString(sum);
string[] row = new string[]{ firstColum, secondColum, thirdColum, fourthColum, fifthColum };
dataGridView1.Rows.Add(row);
Run Code Online (Sandbox Code Playgroud) 我想从DataGridView获取Grid值的DataTable.
换句话说,DataTable与DataGridView值相同
datagridview ×10
c# ×8
winforms ×6
.net ×2
.net-3.5 ×1
data-binding ×1
datatable ×1
format ×1
printing ×1