标签: datagridview

DataGridView - 如何设置列宽?

我有一个带DataGridView控件的WinForms应用程序.我的控件有五列(比如"姓名","地址","电话"等)

我对默认列宽不满意.我希望能更好地控制列外观.我想要的是能够做到以下之一:

  • 以百分比设置每列的宽度
  • 设置每列的宽度(以像素为单位)
  • 使用其他一些最好的方法(使宽度适合文本等)

请建议 - 使用哪个属性以及如何使用.

.net controls datagridview winforms

40
推荐指数
5
解决办法
24万
查看次数

如何格式化DataGridView中的DateTime列?

我正在使用带有对象数据绑定的DataGridView来显示有关系统中日志记录实体的信息,这些信息是通过SOAP从远程服务检索的.其中一列称为"上次操作",表示实体最后一次记录消息.这是一个System.DateTime价值.当我读取SOAP响应(下面的示例)时,他的时间戳显然包含所有信息,最多包含第二个分数.

<LoggingEntity>
<host>marty86ce</host>
<process>10148</process>
<logger>http_core</logger>
<appName>httpd</appName>
<ffda>true</ffda>
<lastAction>2010-10-27T12:00:19.5117509Z</lastAction>
<lastHeartbeat>0001-01-01T00:00:00</lastHeartbeat>
<channelId>em_9BA2A2B4D0B6E66</channelId>
<ffdaChannelId>em_E7C8D1D4DE8EEB9</ffdaChannelId>
</LoggingEntity>
Run Code Online (Sandbox Code Playgroud)

当我在桌子上显示它时,我可以读取分钟 http://i.stack.imgur.com/dLYBz.png 当我按下刷新按钮时,我使用以下代码进行数据绑定

public void RefreshEntities()
{
    IEntityManagement management = EntityPlugin.GetProxy();
    LoggingEntity[] result = management.FindLoggingEntities(new TemplateQuery { ffdaSpecified = true, ffda = true }); //Remote invocation

    Invoke(new MethodInvoker(delegate { gridEntities.DataSource = result; })); //THIS does the data binding from the array

    Invoke(new MethodInvoker(delegate { btnRefresh.Enabled = true; }));
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何控制数据绑定值的列格式.我认为格式dd/MM/yyyy hh:mm来自我的系统设置.如何以编程方式覆盖格式设置?

先感谢您

用于Logbus-ng开源项目的Subversion(FFDAGui程序)的完整解决方案代码.

c# data-binding datetime datagridview winforms

39
推荐指数
3
解决办法
17万
查看次数

以编程方式将新列添加到DataGridView

我有一个绑定到DataTable的DataGridView.DataTable是从数据库查询填充的.该表包含一个名为BestBefore的列.BestBefore是格式化为字符串的日期(SQLite没有日期类型).

我想以编程方式向DataGridView添加一个名为Status的新列.如果BestBefore小于当前日期,则Status值应设置为OK,否则Status值应设置为NOT OK.

我是Winforms的新手,所以我们非常感谢一些示例代码.

更新:

我认为DataColumn.Expression可以进行简单的计算,例如将列的整数值乘以另一个值,但是如何做我需要做的事情呢?也就是说,计算nowBefore列中now和date(字符串格式化)之间的差异,以确定为新状态列提供的值.示例代码将不胜感激.

c# datagridview winforms

38
推荐指数
3
解决办法
21万
查看次数

Datagridview完整行选择但获取单个单元格值

我有一个datagridview是一个完整的行选择.如果点击行中的哪个单元格,我将如何仅从某个单元格中获取数据,因为它突出显示整行.

c# datagridview winforms

38
推荐指数
5
解决办法
23万
查看次数

从选定的datagridview行获取数据以及哪个事件?

我在Windows窗体上有一个DataGridView(Selectionmode:FullRowSelect)以及一些文本框,所以我想要做的是每当用户选择一行(可能是click或double_click)时,该行的内容必须显示在文本中箱,

我试过这个代码

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
    MessageBox.Show("CEll Double_Click event calls");
    int rowIndex = e.RowIndex;
    DataGridViewRow row = dataGridView1.Rows[rowIndex];
    textBox5.Text = row.Cells[1].Value;
}

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    int rowIndex = e.RowIndex;
    DataGridViewRow row = dataGridView1.Rows[rowIndex];
    textBox5.Text = dataGridView1.Rows[1].Cells[1].Value.ToString();// row.Cells[1].Value;
}
Run Code Online (Sandbox Code Playgroud)

还有很多其他的文本框,但主要的问题是没有一个事件似乎被触发,我应该使用什么事件这样做,或者是否有一些我可能设置错误的datagrid属性?任何帮助,将不胜感激...:(

c# datagridview winforms

38
推荐指数
3
解决办法
29万
查看次数

37
推荐指数
6
解决办法
11万
查看次数

如何在DataGridView中以编程方式设置单元格值?

我有一个DataGridView.一些单元从串口接收数据:我想将数据推入单元,并让它更新底​​层绑定对象.

我正在尝试这样的事情:

SetValueFromSerial (decimal newValue)
{
    dataGridView.CurrentCell.Value = newValue;
}
Run Code Online (Sandbox Code Playgroud)

使用字符串没有帮助:

    dataGridView.CurrentCell.Value = newValue.ToString ();
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我都没有在网格中看到任何内容,并且基础值没有变化.

我在谷歌搜索并在这里搜索,但我没有找到任何东西.(我可能错过了一些东西,也许是显而易见的东西,但我并不是完全懒惰.)

c# datagridview winforms

37
推荐指数
4
解决办法
21万
查看次数

如何在窗体调整大小时调整datagridview控件的大小

当孩子控件调整大小时,我发现了很多关于如何调整表单大小的问题,但我正在尝试做一些更简单的事情(也许这么简单的人甚至不会问它:|)

我想自动调整datagridview的宽度以填充表单的宽度.简单地将datagridview放在表单上后,在调整表单大小时,网格保持相同的大小.即使我使用将控件连接到表单边框的小恒定距离快照事件,也会发生这种情况.

我是否必须处理某些类型的form.resize事件,或者是否可以在VS中设置属性?

c# resize datagridview winforms

37
推荐指数
6
解决办法
12万
查看次数

如何将新的DataRow添加到DataTable中?

我有一个DataGridView绑定到DataTable(DataTable绑定到数据库).我需要一个补充DataRowDataTable.我正在尝试使用以下代码:

dataGridViewPersons.BindingContext[table].EndCurrentEdit();
DataRow row = table.NewRow();

for (int i = 0; i < 28; i++)
{
    row[i] = i.ToString();
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,DataGridView从未添加过新的行.请告诉我,如何修复我的代码?

先感谢您.

c# datatable datagridview datarow

36
推荐指数
3
解决办法
19万
查看次数

如何在第一次单击时激活组合框(Datagridview)

在winforms中,您需要单击组合框两次以正确激活它 - 第一次聚焦它,第二次实际获取下拉列表.

如何更改此行为以便在第一次单击时激活?

这适用于DATAGRIDVIEW组合框.

.net c# combobox datagridview winforms

34
推荐指数
3
解决办法
4万
查看次数