如何修改DataGridView列宽?Visual Studio 2017下代码无效求助
解决DataGridView列宽设置未生效的问题
嘿,我懂你的困扰——你写了代码想调整VacancyID列的宽度,但完全没效果对吧?问题出在你选的事件上!
你把设置列宽的代码放在了CellContentClick事件里,这个事件只有当用户点击单元格里的具体内容(比如文本、按钮控件)时才会触发,而DataGridView加载数据的时候根本不会触发这个事件,所以你的代码根本没机会执行。
给你几个靠谱的解决方案:
方案1:用DataBindingComplete事件
这个事件会在DataGridView完成数据绑定后触发,刚好适合用来调整列宽:
private void dvgVacancySkill_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) { // 先判断列是否存在,避免空引用报错 var vacancyIDColumn = dvgVacancySkill.Columns["VacancyID"]; if (vacancyIDColumn != null) { vacancyIDColumn.Width = 50; } }
记得要在Visual Studio的设计器里,把dvgVacancySkill的DataBindingComplete事件绑定到这个方法上哦。
方案2:在Form_Load里设置
如果你是在窗体加载时完成数据绑定,那可以在绑定数据之后直接设置列宽:
private void YourForm_Load(object sender, EventArgs e) { // 先执行你的数据绑定逻辑,比如从数据库获取数据并赋值给DataSource // dvgVacancySkill.DataSource = yourDatabaseData; // 数据绑定完成后调整列宽 var vacancyIDColumn = dvgVacancySkill.Columns["VacancyID"]; if (vacancyIDColumn != null) { vacancyIDColumn.Width = 50; } }
方案3:直接在设计器里设置(更简单)
其实不用写代码也能搞定:在设计器里选中dvgVacancySkill,打开列编辑器,找到VacancyID列,直接在属性里修改Width值为50就行,这样程序一启动就会生效。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

