C# winform 关于datagrideview问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# winform 关于datagrideview问题相关的知识,希望对你有一定的参考价值。

我在datagridview 里面自己写了 三个 按钮 其中有一个禁止按钮! 当我点中禁止按钮时 这条数据其他两个按钮变成不可点击 或者 隐藏! 高分求答案! 代码详细 +50 分
我自己写的 三个按钮 每条数据都有这三个操作按钮

参考技术A 可以多种方式解决,最简单的在你的模板列中,给此按钮加下一个javascript方法,在方法里面找到另外两个控件的id,并控件id 将其属性disable为true.就可以了。呵 参考技术B 给你个提示吧
假如你的三个按钮分别是:添加,修改,禁止
在你的Datagridview的Click事件里面写
首先获取当前选中行的编号
int id=this.datagridveiw.selecrows[0][0].tostring();
然后就根据行号来Enabled=fase来不可编辑
同事Visible隐藏其他两个按钮

关于c# winform datagrid的列宽如何设置为自动适应内容宽度? 在网上找到的这段代码

public void AutoSizeTable(DataGrid dgData)

int numCols = dgData.TableStyles[0].GridColumnStyles.Count;
for (int i = 0; i < numCols; i++)

AutoSizeCol(dgData,i);



private static void AutoSizeCol(DataGrid dgData, int colIndex)


int rowNums = ((DataTable)dgData.DataSource).Rows.Count;
Byte[] myByte = System.Text.Encoding.Default.GetBytes(dgData.TableStyles["ROW"].GridColumnStyles

[colIndex].HeaderText);
int textCount = myByte.Length;
int tempCount = 0;

for (int i = 0; i < rowNums; i++)


if (dgData[i, colIndex] != null)

myByte = System.Text.Encoding.Default.GetBytes(dgData[i, colIndex].ToString().Trim());
tempCount = myByte.Length;

if (tempCount > textCount)

textCount = tempCount;



dgData.TableStyles[0].GridColumnStyles[colIndex].Width = textCount * 7;



但放进程序后,dgData的值总是为null.请问如何解决此问题

参考技术A 你找到的这种方法当系统主题的字体大小变更时无法取得正确列宽。
建议你使用Graphics.MeasureString方法来计算文字使用的宽度。
循环你要处理的列的所有字段的值,计算出其中最大宽度,在修改列宽即可。
如果数据量太大,也可以只是计算显示的内容,或者缓冲区中的内容。

以上是关于C# winform 关于datagrideview问题的主要内容,如果未能解决你的问题,请参考以下文章

c# winform 关于绘图的问题,如何定义一个Graphics g作为全局变量

C#关于winform线程更新form的文本框输出的问题

C#关于winform窗口控件过多,显示慢的问题?

C#关于winform窗口控件过多,显示慢的问题?

关于C# winform调用另一个窗口中的控件的问题

C# Winform 关于ListView控件绑定DataTable