精华内容
下载资源
问答
  • VB 动态改变图像框Image的Stretch属性,用户通过自定义的两款代码,可随意改变image的长度和宽度大小,不过本源码将此两种操作封装在按钮事件,用户只需单击按钮,即可放大或缩小image框,动态改变了Image的...
  • 2、tab控件中的WhatsThisHelpID属性被占用(-_-#,没办法,为了省系统资源,好在多数控件有这个属性且基本没人用,偷笑^^) 3、没有WhatsThisHelpID属性控件不会随页变动 4、如果把本控件的BackColor设成&H00FF...
  • 1.怎样能使ActiveX控件属性可以象image控件一样直接用等号赋值? 2.如何判断用户选择的是TreeView的父节点还是子节点? 3.若要向TreeView控件动态地加入node,对key值该如何设置? 4.当ListView能够多选时,...
  • 在SDK使用TreeView控件

    千次阅读 2010-06-15 01:28:00
    在SDK使用控件非常的麻烦,不像VB之类的编辑工具,直接设置控件属性就能很方便的控制控件。平时用得最多的控件包括按钮、ListBox、 Combobox、Edit、Image List等,学了一个多月SDK,发现只会用按钮和Edit控件,...
     
    
    在SDK中使用控件非常的麻烦,不像VB之类的编辑工具,直接设置控件属性就能很方便的控制控件。平时用得最多的控件包括按钮、ListBox、 Combobox、Edit、Image List等,学了一个多月SDK,发现只会用按钮和Edit控件,其它的控件一点儿都不会用,所以决定拿些时间来熟悉这些常用控件,首先准备熟悉的是 TreeView控件。
    
    一、TreeView
    
    不管是作用TreeView控件还是ListView控件,都得用到几个结构体,如果对这些结构体不了解,那在使用控件时就糊理糊涂的,胡乱修改结构体的值,设置不出想要的结果,也不知改哪里,结果出来了也不知怎么出来的。不知为什么,今晚状态特别好,心很静,前几天熟悉控件的使用时,直接从 MSDN上把代码复制下来,也没心思去读代码,搞了半天也显示不出想要的结果,有句话说得很对,心态决定成败。
    
    使用TreeView控件会用到TVITEM、TVINSERTSTRUCT二个结构体,熟悉了这二个结构体,控制TreeView就基本不成问题了。
    
    1.TVITEM结构体
    
    该结构体是用来设置节点信息的,比如节点的名称、节点名称占用的长度、指定能使用的结构体成员以及节点状态等信息。先来看看TVITEM结构体的定义:
    
    typedef struct tagTVITEM {
        UINT mask;
        HTREEITEM hItem;
        UINT state;
        UINT stateMask;
        LPTSTR pszText;
        int cchTextMax;
        int iImage;
        int iSelectedImage;
        int cChildren;
        LPARAM lParam;
    } TVITEM, *LPTVITEM;
    
    mask 
    
    是指定能使用的结构体成员,比如将mask的值设置为“TVIF_TEXT | TVIF_STATE”,那么就只能使用TVITEM结构体中的pszText和state成员,当然,mask成员无论在什么时候都是可用的。
    
    hItem
    
    选择该节点的句柄,搞了半天才明白这个成员的作用,既然是句柄,那就得先获取句柄,然后才能使用句柄。在TreeView创建第一个节点时,是不用设置这个成员的。有了第一个节点后,可以通过多种途径来获取一个节点的句柄,如TreeView_InsertItem函数、 TreeView_GetNextItem函数、TreeView_GetParnt函数等,都可以获取节点的句柄,获取节点的句柄后,就可以对该节点进行控制了。
    
    state
    
    这个是用来设置节点状态的,这个成员的设置貌似挺复杂的,一个节点到底有多少种状态,没搞清。好像应该大概可能是16种状态。好好的研究了一下,发现state成员是一个UINT类型,也就是unsigned int数据类型,是16位的,也就是说每1位是一种状态,刚好有16种状态。0-7位是普通节点的状态,8-11是覆盖图像索引,啥意思?没看懂!12-15位是图像索引,我估摸着,8-11和12-15应该是节点图片的几种状态,操,转了一圈又转回去了。到是0-7位的节点状态比较好理解,整理如下:
    
    TVIS_BOLD  -节点名称加粗
    
    TVIS_CUT - 将选择的节点作为复制和粘贴的目标
    
    TVIS_DROPHILITED  - 将选择的节点作为拖拽目标,用于拖动节点的
    
    TVIS_EXPANDED - 展开该节点下的子节点
    
    TVIS_EXPANDEDONCE -搞不懂??????
    
    TVIS_EXPANDPARTIAL  -展开部分节点
    
    TVIS_SELECTED -节点处于选择状态
    
     
    
    还有三个
    
    TVIS_OVERLAYMASK  -覆盖图像索引的掩码,不太懂
    
    TVIS_STATEIMAGEMASK -图像索引掩码,还是不太懂
    
    TVIS_USERMASK -同 TVIS_STATEIMAGEMASK
    
    这数来数去,怎么只有10种状态,还有6种呢?
    
    stateMask
    
    stateMask的作用类似于mask,是用于指定有效的节点状态,例如要使用TVIS_BOLD和TVIS_EXPANDED两种状态,就必须在stateMask中指定这两种状态,也就是说state和stateMask中的设置得一样。
    
    pszText
    
    节点名称。
    
    cchTextMax
    
    节点名称长度。
    
    iImage
    
    节点在非选中状态下的图像索引,好像是通过IMAGELIST来建立图像索引。
    
    iSelectedImage
    
    节点在选中状态下的图像索引
    
    表示树控件项是否有相关的子结点的标志位。此成员可以是以下值之一:
    0 —— 表示此项没有子结点。
    1 —— 表示此此项有一个或多个子结点。
    I_CHILDRENCALLBACK —— 父窗口会始终跟踪确定此项是否有子结点。此时,如果树控件需要显示项时,它会给父窗口发送TVN_GETDISPINFO通知消息,决定此项是否有子结点。如果树控件含有TVS_HASBUTTONS风格,则它使用此成员来决定是否显示按钮以表明存在子结点。也可以使用此成员来强制树控件显示按钮,尽管没有在此项之下插入任何子结点。这样可以最小化由于在此项之下插入了子结点所占用的控件内存。
    
    lParam
    
    同控件相关的32位值。是些啥值?不知道
    
    到此虽然对TVITEM结构还有些不清不楚,但对于一般的节点控制应该没啥问题了。
    
    2.TVINSERTSTRUCT结构体
    
    TVITEM结构体是对单个的、独立的节点信息进行设置,而TVINSERTSTRUCT则是对要添加节点的所有属性进行设置,也包括TVITEM 结构体,比如节点添加到TreeView的哪个位置、以及父节点的句柄,其结构体的定义中下:
    
    typedef struct tagTVINSERTSTRUCT {
        HTREEITEM hParent;
        HTREEITEM hInsertAfter;
    #if (_WIN32_IE >= 0x0400)
        union
        {
            TVITEMEX itemex;
            TVITEM item;
        } DUMMYUNIONNAME;
    #else
        TVITEM item;
    #endif
    } TVINSERTSTRUCT, *LPTVINSERTSTRUCT;
    一共个四个成员
    
    hParent
    
    父节点句柄
    
    hInsertAfter
    
    在哪个节点前插入
    
    item
    
    一个TVITEM结构体
    
    以上这两个结构体,除了TVITEM中的少数几个成员的作用还弄不清外,其余的都了解个七七八八了。
    展开全文
  • 在SDK使用控件非常的麻烦,不像VB之类的编辑工具,直接设置控件属性就能很方便的控制控件。平时用得最多的控件包括按钮、ListBox、Combobox、Edit、Image List等,学了一个多月SDK,发现只会用按钮和Edit控件,...

    在SDK中使用控件非常的麻烦,不像VB之类的编辑工具,直接设置控件属性就能很方便的控制控件。平时用得最多的控件包括按钮、ListBox、Combobox、Edit、Image List等,学了一个多月SDK,发现只会用按钮和Edit控件,其它的控件一点儿都不会用,所以决定拿些时间来熟悉这些常用控件,首先准备熟悉的是TreeView控件。

    一、TreeView

    不管是作用TreeView控件还是ListView控件,都得用到几个结构体,如果对这些结构体不了解,那在使用控件时就糊理糊涂的,胡乱修改结构体的值,设置不出想要的结果,也不知改哪里,结果出来了也不知怎么出来的。不知为什么,今晚状态特别好,心很静,前几天熟悉控件的使用时,直接从MSDN上把代码复制下来,也没心思去读代码,搞了半天也显示不出想要的结果,有句话说得很对,心态决定成败。

    使用TreeView控件会用到TVITEM、TVINSERTSTRUCT二个结构体,熟悉了这二个结构体,控制TreeView就基本不成问题了。

    1.TVITEM结构体

    该结构体是用来设置节点信息的,比如节点的名称、节点名称占用的长度、指定能使用的结构体成员以及节点状态等信息。先来看看TVITEM结构体的定义:

    typedef struct tagTVITEM {
        UINT mask;
        HTREEITEM hItem;
        UINT state;
        UINT stateMask;
        LPTSTR pszText;
        int cchTextMax;
        int iImage;
        int iSelectedImage;
        int cChildren;
        LPARAM lParam;
    } TVITEM, *LPTVITEM;

    mask 

    是指定能使用的结构体成员,比如将mask的值设置为“TVIF_TEXT | TVIF_STATE”,那么就只能使用TVITEM结构体中的pszText和state成员,当然,mask成员无论在什么时候都是可用的。

    hItem

    选择该节点的句柄,搞了半天才明白这个成员的作用,既然是句柄,那就得先获取句柄,然后才能使用句柄。在TreeView创建第一个节点时,是不用设置这个成员的。有了第一个节点后,可以通过多种途径来获取一个节点的句柄,如TreeView_InsertItem函数、TreeView_GetNextItem函数、TreeView_GetParnt函数等,都可以获取节点的句柄,获取节点的句柄后,就可以对该节点进行控制了。

    state

    这个是用来设置节点状态的,这个成员的设置貌似挺复杂的,一个节点到底有多少种状态,没搞清。好像应该大概可能是16种状态。好好的研究了一下,发现state成员是一个UINT类型,也就是unsigned int数据类型,是16位的,也就是说每1位是一种状态,刚好有16种状态。0-7位是普通节点的状态,8-11是覆盖图像索引,啥意思?没看懂!12-15位是图像索引,我估摸着,8-11和12-15应该是节点图片的几种状态,操,转了一圈又转回去了。到是0-7位的节点状态比较好理解,整理如下:

    TVIS_BOLD  -节点名称加粗

    TVIS_CUT - 将选择的节点作为复制和粘贴的目标

    TVIS_DROPHILITED  - 将选择的节点作为拖拽目标,用于拖动节点的

    TVIS_EXPANDED - 展开该节点下的子节点

    TVIS_EXPANDEDONCE -搞不懂??????

    TVIS_EXPANDPARTIAL  -展开部分节点

    TVIS_SELECTED -节点处于选择状态

     

    还有三个

    TVIS_OVERLAYMASK  -覆盖图像索引的掩码,不太懂

    TVIS_STATEIMAGEMASK -图像索引掩码,还是不太懂

    TVIS_USERMASK -同TVIS_STATEIMAGEMASK

    这数来数去,怎么只有10种状态,还有6种呢?

    stateMask

    stateMask的作用类似于mask,是用于指定有效的节点状态,例如要使用TVIS_BOLD和TVIS_EXPANDED两种状态,就必须在stateMask中指定这两种状态,也就是说state和stateMask中的设置得一样。

    pszText

    节点名称。

    cchTextMax

    节点名称长度。

    iImage

    节点在非选中状态下的图像索引,好像是通过IMAGELIST来建立图像索引。

    iSelectedImage

    节点在选中状态下的图像索引

    表示树控件项是否有相关的子结点的标志位。此成员可以是以下值之一:
    0 —— 表示此项没有子结点。
    1 —— 表示此此项有一个或多个子结点。
    I_CHILDRENCALLBACK —— 父窗口会始终跟踪确定此项是否有子结点。此时,如果树控件需要显示项时,它会给父窗口发送TVN_GETDISPINFO通知消息,决定此项是否有子结点。如果树控件含有TVS_HASBUTTONS风格,则它使用此成员来决定是否显示按钮以表明存在子结点。也可以使用此成员来强制树控件显示按钮,尽管没有在此项之下插入任何子结点。这样可以最小化由于在此项之下插入了子结点所占用的控件内存。

    lParam

    同控件相关的32位值。是些啥值?不知道

    到此虽然对TVITEM结构还有些不清不楚,但对于一般的节点控制应该没啥问题了。

    2.TVINSERTSTRUCT结构体

    TVITEM结构体是对单个的、独立的节点信息进行设置,而TVINSERTSTRUCT则是对要添加节点的所有属性进行设置,也包括TVITEM结构体,比如节点添加到TreeView的哪个位置、以及父节点的句柄,其结构体的定义中下:

    typedef struct tagTVINSERTSTRUCT {
        HTREEITEM hParent;
        HTREEITEM hInsertAfter;
    #if (_WIN32_IE >= 0x0400)
        union
        {
            TVITEMEX itemex;
            TVITEM item;
        } DUMMYUNIONNAME;
    #else
        TVITEM item;
    #endif
    } TVINSERTSTRUCT, *LPTVINSERTSTRUCT;
    一共个四个成员

    hParent

    父节点句柄

    hInsertAfter

    在哪个节点前插入

    item

    一个TVITEM结构体

    以上这两个结构体,除了TVITEM中的少数几个成员的作用还弄不清外,其余的都了解个七七八八了。

    转载于:https://www.cnblogs.com/FCoding/archive/2012/07/18/2598324.html

    展开全文
  • VB中实现一个动态的图形,一般可使用控制几个图形控件的Visible属性的True或者False交替来实现,但是这样会出现图形在更新中闪烁的问题。虽然可以用双缓冲的办法来实现不闪烁,但是比较麻烦。其实有最简单有效的办法...

    VB中实现一个动态的图形,一般可使用控制几个图形控件的Visible属性的True或者False交替来实现,但是这样会出现图形在更新中闪烁的问题。虽然可以用双缓冲的办法来实现不闪烁,但是比较麻烦。其实有最简单有效的办法,其原理也是在内部实现了双缓冲功能。就是用一个imagelist控件来储存图形集,然后把要显示该图形集的容器(如:image,picturebox,form)依次与imagelist控件内不同编号的图形相连接。因为存在imagelist里面的图形已经在内存中,所以不用再在内存中绘制,实现了双缓冲。闪烁的问题解决了!

    例:
    首先设立一个image控件,和一个imagelist控件
    然后在imagelist1控件内存入10个图形,

    For n = 1 To 10
     Set Image1.Picture = ImageList1.ListImages(n).Picture
    Next n

    展开全文
  • VB精华文摘(CHM)

    2010-10-22 08:31:20
    确定谁引发Lostfocus TextBox中文字如何靠中靠右对齐 AutoRedraw与Image/Picture...VB中Combo的一种输入检查制约方法的实现 用VB制做图型菜单控件 用VB设计VCD播放器 功能强大的增强列表框 与控件有关的问答集
  • ASP.NET 控件的使用

    2009-04-02 16:02:54
    2.4.1 使用Image控件 70 2.4.2 使用ImageMap控件 71 2.5 使用Panel控件 75 2.6 使用HyperLink控件 79 2.7 小结 81 第3章 使用验证控件 82 3.1 验证控件概述 82 3.1.1 验证控件与JavaScript 85 3.1.2 使用Page.Is...
  • vb.net侧边栏图形菜单

    千次阅读 2015-08-07 16:06:44
    VB6时代,做侧边栏菜单非常困难,一般都要用到第三方控件,但是在VB.net,做侧边栏图形菜单非常方便,先看效果: 这是菜单选中效果: 这些菜单都是用Label控件做的,容器是用的Panel控件,用的代码很少,...

    VB6时代,做侧边栏菜单非常困难,一般都要用到第三方控件,但是在VB.net中,做侧边栏图形菜单非常方便,先看效果:
    这里写图片描述
    这是菜单选中效果:
    这里写图片描述
    这些菜单都是用Label控件做的,容器是用的Panel控件,用的代码很少,具体做法:

    1、拖放一个panel控件在窗体左边,设置BackgroundImage属性,加入一张漂亮的背景图,设置BackgroundImageLayout属性,有平铺、居中、缩放,自己选一个合适的。BorderStyle属性设为None,Dock属性为Left,自动绑定到窗体左边。

    2、放置Label控件在Panel之上,拉到合适大小(拉不动就把AutoSize设为False),与Panel左右边对齐,将背景色设置为透明,边框设置为None,FlatStyle设置为Popup,image属性加入图标文件,我用的是38*38的真彩图标,ImageAlign向左对齐,TextAlign设为中右对齐,Text文本后面带两个空格,例如”软件运行 “,这样做为了让菜单文本不至于靠在最边上。

    3、加入代码:

    Private lblMenu As Object = Nothing '鼠标移动的前一菜单项
        Private MenuSelect As Object = Nothing '鼠标点击的前一菜单项
        Private Sub Menu_Click(sender As System.Object, e As System.EventArgs) Handles _
        Label1.Click, Label2.Click, Label3.Click, Label4.Click, Label5.Click, Label6.Click, Label7.Click
            If MenuSelect IsNot Nothing Then
                MenuSelect.forecolor = Color.White '前面选择的菜单项前景色变为白色
            End If
            sender.forecolor = Color.Chartreuse  '当前选择的菜单项前景色为亮绿色
            MenuSelect = sender  '保存当前选择菜单项
            Select Case sender.name.ToString
                Case "Label1"
                    MessageBox.Show("你点击了Label1")
                Case "Label2"
                    MessageBox.Show("你点击了Label2")
            End Select
        End Sub
    
        Private Sub Menu_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles _
        Label1.MouseDown, Label2.MouseDown, Label3.MouseDown, Label4.MouseDown, Label5.MouseDown, Label6.MouseDown, Label7.MouseDown
            sender.BorderStyle = BorderStyle.FixedSingle  '鼠标按下菜单效果
        End Sub
    
        Private Sub Menu_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles _
        Label1.MouseUp, Label2.MouseUp, Label3.MouseUp, Label4.MouseUp, Label5.MouseUp, Label6.MouseUp, Label7.MouseUp
            sender.BorderStyle = BorderStyle.None  '鼠标抬起取消菜单效果
        End Sub
    
        Private Sub Menu_MouseEnter(sender As Object, e As System.EventArgs) Handles _
        Label1.MouseEnter, Label2.MouseEnter, Label3.MouseEnter, Label4.MouseEnter, Label5.MouseEnter, Label6.MouseEnter, Label7.MouseEnter
            If lblMenu IsNot Nothing Then
                Call Menu_MouseLeave(lblMenu, e)  '前一菜单项恢复初始状态
            End If
            sender.backcolor = Color.DeepSkyBlue  '鼠标进入菜单范围的效果:背景色变深蓝
            lblMenu = sender  '保存当前进入菜单项
        End Sub
    
        Private Sub Menu_MouseLeave(sender As Object, e As System.EventArgs) Handles _
        Label1.MouseLeave, Label2.MouseLeave, Label3.MouseLeave, Label4.MouseLeave, Label5.MouseLeave, Label6.MouseLeave, Label7.MouseLeave
            sender.backcolor = Color.Transparent  '鼠标离开菜单项恢复默认效果,背景色透明
            sender.BorderStyle = BorderStyle.None  '菜单项边框取消
            lblMenu = Nothing  '删除保存的菜单项
        End Sub
    展开全文
  • 1)设置Treeview控件在ACCESS的名称属性,将名称... 2)设置Imagelist控件在ACCESS的名称属性,将名称设置为“Image" 2)设置Imagelist控件本身的属性,双击控件后,在弹出来的设置框中选“Images",单击“Insert
  • VisualBasic对于静态图片进行缩放处理可以使用Image控件,将控件的Stretch属性设为True,则装入的图片会改变比例适应Image控件的范围,因此对图片的缩放处理变成对Image控件的Height、Width属性值的大小变
  • 大学计算机D(VB.NET)

    千次阅读 2020-04-06 10:50:50
    第一部分 1、单选题: VB.NET属于下面哪类编程语言( ) 选项: A:低级 B:面向过程 C:面向对象 D:中级 答案: 【面向对象】 ...在VB.NET,在窗体上显示控件的文本,用( A )属性设置 选项: A:Image ...
  • VB课程设计俄罗斯方块

    热门讨论 2011-02-25 10:46:55
    我们在设计过程主要用到的控件有:command控件,image控件,picture控件,label控件,timer控件,text控件,windows media player控件等等。 1.5主要实现的功能 我们开发的俄罗斯方块游戏,主要实现了以下几种功能...
  • 16、PictureBox控件和Image控件有什么区别? 17、Visual Basic可处理哪些格式的图形文件? 18、在程序运行时怎样在图形(像)框装入或删除图形? 19、简述Printer对象与Printers集合对象的区别。 20、当要在...
  • 此外还可以通过BackColor、BackgroundImage属性来改变Panel控件的外观。 4、Font和ForeColor属性,用于改变Panel控件内部文字的大小与文字的颜色,需要注意的时候,这里改变的是其内部控件的显示的Text属性的文字...
  • VB.NET高级编程(第二版)

    热门讨论 2008-07-18 15:47:58
    .NET Framework和公共语言运行时(CLR)、应用继承从基类中派生类、利用Try...Catch...Finally结构处理错误、命名空间、使用ADO.NET访问数据、创建Windows应用程序和定制Windwos控件、组合使用COM和ActiveX组件、...
  • 在VS2003,如果要给ActiveX控件的图象属性赋值,需要调用VB6.ImageToPicture。因为VS2003把图象属性的类型处理为stdole.IPictureDisp对象,所以需要利用这个函数将System.Drawing.Image转换为stdole.IPictureDisp...
  • 3.5 PictureBox和Image控件83 3.5.1 PictureBox控件83 3.5.2 Image控件86 3.6滚动条控件86 3.7 DriveListBox、DirListBox和FileListBox控件89 3.8其他控件91 3.8.1Timer控件91 3.8.2 Line控件92 3.8.3 Shape控件92 ...
  • 3.5 PictureBox和Image控件83 3.5.1 PictureBox控件83 3.5.2 Image控件86 3.6滚动条控件86 3.7 DriveListBox、DirListBox和FileListBox控件89 3.8其他控件91 3.8.1Timer控件91 3.8.2 Line控件92 3.8.3 Shape控件92 ...
  • ASP.NET精品课程+源代码

    千次下载 热门讨论 2009-01-05 20:15:51
    积极参与,平等对话和研讨,从而重点培养学习者的批判反思意识及团队协作能力,并促使学习者充分理解问题的复杂性、变化性、多样性等属性的重要教学形式。目前大部分高校在网站建设、程序设计等教学多采用传统的...
  • ASP.NET.4揭秘

    2012-06-08 16:20:52
    2.4.1 使用image控件77 2.4.2 使用imagemap控件78 2.5 使用panel控件82 2.6 使用hyperlink控件87 2.7 小结89 第3章 使用验证控件90 3.1 验证控件概述90 3.1.1 验证控件与javascript93 3.1.2 使用page.isvalid94 ...
  • 实例146 在VB中执行事务 251 实例147 在查询中使用游标 253 实例148 列出网络中所有的SQL Server服务器 255 实例149 利用Execute执行SQL语句 256 实例150 解决查询过程中字段类型不同的问题 257 实例151 把查询...
  • 实例146 在VB中执行事务 251 实例147 在查询中使用游标 253 实例148 列出网络中所有的SQL Server服务器 255 实例149 利用Execute执行SQL语句 256 实例150 解决查询过程中字段类型不同的问题 257 实例151 把查询...
  • 10.1.3 PictureBox控件和Image控件的异同点 175 10.1.4 图形方法 176 10.1.5 绘图属性 176 10.1.6 图形显示方法 176 10.2 GDI+ 177 10.2.1 GDI+概述 177 10.2.2 GDI+方法 177 10.2.3 GDI+主要命名空间 ...
  • mnode.Image = 2 '设置节点的图表为imagelist1的图2 Set rspsw = New ADODB.Recordset rspsw.open"select*from user_load",cn,adOpenStatic,adLockPessimistic Do Until rspsw.EOF '用rspsw的记录对...
  • Visual.C#.编程精彩百例

    热门讨论 2013-01-07 12:09:39
    实例82 深入WinForms--Image Viewer应用程序(2) 实例83 开饭时间提醒器(Meal Reminder) 实例84 服务器端C#实例 实例85 数字时钟设计技术 实例86 自动编译C#程序AutoCompiler 实例87 使用C#与ASP+编写File ...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

vb中image控件属性