首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VB.NET :当应用程序运行时,如何调整DatagridView列的宽度?

VB.NET :当应用程序运行时,如何调整DatagridView列的宽度?
EN

Stack Overflow用户
提问于 2012-10-29 14:37:56
回答 2查看 2.9K关注 0票数 2

在VB中,我正在使用Windows forms DatagridView。

因此,在这里,我试图获得的功能,在运行应用程序后,用户应该能够调整列宽(在飞行)。

我经历了很多东西,但它们只提供静态解决方案。但我想要实现的是在应用程序开始运行后,如果用户想要自定义列宽,那么有什么选择呢?

EN

回答 2

Stack Overflow用户

发布于 2012-10-29 17:16:09

我不确定使用标准的.NET DataGridViews是否能够做到这一点,但如果您下载并使用基础架构控件,它们将允许您按照标准动态更改列宽。

票数 0
EN

Stack Overflow用户

发布于 2012-10-30 10:58:25

除非您将AllowUserToResizeColumns属性设置为false,否则用户应该能够使用鼠标随心所欲地修改它们,就像Excel中的“标准”网格一样。

但是,我怀疑您是在问如何保留该设置,以便下次运行时,列被设置回用户的首选项?

一种方法是处理事件上的ColumnWidthChanged事件,并将值存储在注册表中:

代码语言:javascript
运行
复制
Private Sub DataGridView1_ColumnWidthChanged(sender As Object, e As System.Windows.Forms.DataGridViewColumnEventArgs) Handles data1.ColumnWidthChanged

    Dim dt As DataGridView

    dt = DirectCast(sender, DataGridView)

    With My.Computer.Registry
        .CurrentUser.CreateSubKey(csRegKey & "\Columns\" & dt.Name)
        .SetValue("HKEY_CURRENT_USER\" & csRegKey & "\Columns\" & dt.Name, e.Column.Name, e.Column.Width, Microsoft.Win32.RegistryValueKind.DWord)
    End With

End Sub

其中csRegKey是您选择的常量字符串值,定义在HKCU配置单元中存储该值的位置,例如"Software\MyAppName“。

然后,当您的应用程序启动时,读取注册表中的这些值,并相应地将它们应用于列宽:

代码语言:javascript
运行
复制
Dim key As Microsoft.Win32.RegistryKey

key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(csRegKey & "\Columns\YourDataName")

If key IsNot Nothing Then
    For Each colAny As DataGridViewColumn In Me.data1.Columns
        If key.GetValue(colAny.Name) <> 0 Then
            colAny.Width = key.GetValue(colAny.Name)
        End If
    Next

    key.Close()
End If
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13116942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档