FlexGrid中添加Windows控件

2024-05-01 01:48
文章标签 windows 控件 flexgrid

本文主要是介绍FlexGrid中添加Windows控件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 FlexGrid中添加Windows控件  


在FlexGrid的使用过程中,遇到在列中显示按钮的要求,利用 HostedControl 实现。
本例添加一列按钮,其他控件同理。

1. 新规作成一Form,加入FlexGrid控件,将Dock属性设置为 Fill。

2. 追加HostedControl类。

3. 在Form的Load事件中,添加所需要控件。

完整代码如下

Imports  C1.Win.C1FlexGrid
Public   Class FlexGrid
    
Private _al As ArrayList = New ArrayList()


    
Private Sub FlexGrid_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        
For i As Integer = 1 To 10
            
' ボタンを定義する
            Dim btn1 As Button = New Button()
            btn1.BackColor 
= SystemColors.Control
            
'ボタン名を設定する(行番号)
            btn1.Name = i.ToString

            btn1.Text 
= "BTN " + i.ToString

            
'HostedControlを追加する
            _al.Add(New HostedControl(C1FlexGrid1, btn1, i, 1))

            
' 行高さを設定する
            C1FlexGrid1.Rows(i).Height = 20

            
'事件を追加する 
            AddHandler btn1.Click, AddressOf FlexGridButton_Click
        
Next
        
    
End Sub


    
Private Sub C1FlexGrid1_Paint(ByVal sender As ObjectByVal e As System.Windows.Forms.PaintEventArgs) Handles C1FlexGrid1.Paint
        
For Each hosted As HostedControl In _al
            hosted.UpdatePosition()
        
Next hosted
    
End Sub


    
Private Sub FlexGridButton_Click(ByVal sender As ObjectByVal e As System.EventArgs)
        MessageBox.Show(
"行番号は【" & CType(sender, Button).Name & "】です!")
    
End Sub


End Class


Friend   Class HostedControl
    
Friend _flex As C1FlexGrid
    
Friend _ctl As Control
    
Friend _row As Row
    
Friend _col As Column

    
Friend Sub New(ByVal flex As C1FlexGrid, ByVal hosted As Control, ByVal row As IntegerByVal col As Integer)
        _flex 
= flex
        _ctl 
= hosted
        _row 
= flex.Rows(row)
        _col 
= flex.Cols(col)

        
' ホストされたコントロールをグリッドに追加します。
        _flex.Controls.Add(_ctl)
    
End Sub

    
Friend Function UpdatePosition() As Boolean
        
' 行および列のインデックスを取得します。
        Dim r As Integer = _row.Index
        
Dim c As Integer = _col.Index
        
If r < 0 OrElse c < 0 Then
            
Return False
        
End If

        
' セルの位置を取得します
        Dim rc As Rectangle = _flex.GetCellRect(r, c, False)

        
'  セルに収まらない場合コントロールを非表示します。
        If rc.Width <= 0 OrElse rc.Height <= 0 OrElse (Not rc.IntersectsWith(_flex.ClientRectangle)) Then
            _ctl.Visible 
= False
            
Return True
        
End If

        
' コントロールを表示します。
        _ctl.Bounds = rc
        _ctl.Visible 
= True

        
Return True
    
End Function

End Class

执行结果如下

这篇关于FlexGrid中添加Windows控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/950442

相关文章

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

windows端python版本管理工具pyenv-win安装使用

《windows端python版本管理工具pyenv-win安装使用》:本文主要介绍如何通过git方式下载和配置pyenv-win,包括下载、克隆仓库、配置环境变量等步骤,同时还详细介绍了如何使用... 目录pyenv-win 下载配置环境变量使用 pyenv-win 管理 python 版本一、安装 和

Python使用pysmb库访问Windows共享文件夹的详细教程

《Python使用pysmb库访问Windows共享文件夹的详细教程》本教程旨在帮助您使用pysmb库,通过SMB(ServerMessageBlock)协议,轻松连接到Windows共享文件夹,并列... 目录前置条件步骤一:导入必要的模块步骤二:配置连接参数步骤三:实例化SMB连接对象并尝试连接步骤四:

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起

Windows如何添加右键新建菜单

Windows如何添加右键新建菜单 文章目录 Windows如何添加右键新建菜单实验环境缘起以新建`.md`文件为例第一步第二步第三步 总结 实验环境 Windows7 缘起 因为我习惯用 Markdown 格式写文本,每次新建一个.txt后都要手动修改为.md,真的麻烦。如何在右键新建菜单中添加.md选项呢? 网上有很多方法,这些方法我都尝试了,要么太麻烦,要么不凑效

Windows下Nginx的安装及开机启动

1、将nginx-1.16.1.zip解压拷贝至D:\web\nginx目录下。 2、启动Nginx,两种方法: (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过。 (2)打开cmd命令窗口,切换到nginx目录下,输入命令 nginx.exe 或者 start nginx ,回车即可。 3、检查nginx是否启动成功。 直接在浏览器地址栏输入网址 http://lo

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库,由 WebM 项目开发和维护,专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩,广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速支持以及灵活的接口设计,使其可以轻松集成到各种应用程序中。 libvpx 的安装和配置过程相对简单,用户可以从官方网站下载源代码

C++实现俄罗斯方块(Windows控制台版)

C++实现俄罗斯方块(Windows控制台版) 在油管上看到一个使用C++控制台编写的俄罗斯方块小游戏,源代码200多行,B站上也有相关的讲解视频,非常不错,值得学习。 B站讲解视频地址为:【百万好评】国外技术大神C++游戏编程实战教程,油管580W收藏,新手10小时入门,并快速达到游戏开发能力(中英字幕) B站 CSDN博主千帐灯无此声还为此写了一篇博客:C++实现俄罗斯方块(源码+详解),讲

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after