以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何获取控件图标名称??  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=127619)

--  作者:foxtablefanse
--  发布时间:2018/11/18 12:36:00
--  [求助]如何获取控件图标名称??
如题
--  作者:有点甜
--  发布时间:2018/11/18 23:26:00
--  
具体一点你的问题。基本上是无法获取名称的。
--  作者:foxtablefanse
--  发布时间:2018/11/19 8:57:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20181119083457.png
图片点击可在新窗口打开查看


动态添加选项卡时,把左侧图标给右侧对应选项卡好处理,但是左侧的图标太大,放在右边不好看。
我的图标命名规则:天气预报1.png(32X32),天气预报2.png(24X24),天气预报3.png(16X16)......。
所以想直接获取左边图标名,改一下再赋给右侧选项卡,以减少代码。
--------------------------------------------
’窗口代码
 Case "快递查询","天气预报","违章查询","证件查验","OpenQQ","Excel编辑"
            Functions.Execute("TabControlAddFrm",e,Tc)

-------------------------------------------
\'动态添加选项页及在选项页加入窗体

Dim e As object=args(0)
Dim tc As WinForm.TabControl = args(1)

If tc.TabPages("TC" & e.Sender.text) Is Nothing Then
    e.Form.StopRedraw()
    Dim tcpg As WinForm.TabPage
    tcpg=Tc.TabPages.Insert("TC" & e.Sender.text,e.Sender.text,Tc.TabPages.Count) \'动态添加一个页面
    Dim pl As WinForm.panel
    pl=e.Form.CreateControl("pl" & e.Sender.text, ControlTypeEnum.panel)\'动态添加一个panel
    
    pl.Dock = System.Windows.Forms.DockStyle.Fill
    tcpg.AddControl(pl)
    \'MessageBox.show(e.Sender.text)
    Functions.Execute("addToFrm",pl,e.Sender.text)’加入窗体
    If tc.TabPages(tcpg.name).Image IsNot Nothing Then \'如果触发的控件有图标,则设为此页面的图标
        tc.TabPages(tcpg.name).Image=e.Sender.Image \'这里可以获取图标名称吗???想把32X32像素的换成24X24像素的。
    End If
    tc.SelectedPage =  Tc.TabPages(tcpg.name)
    e.Form.ResumeRedraw()
    
Else
    Tc.SelectedPage =  Tc.TabPages("TC" & e.Sender.text)
End If

[此贴子已经被作者于2018/11/19 8:58:22编辑过]

--  作者:有点甜
--  发布时间:2018/11/19 9:05:00
--  

1、不可以直接获取控件图标的名称。

 

2、方法一:你可以对image截取大小后赋值,如

 

Dim img = e.sender.image
Dim bmp As new bitmap(img, 24, 24)
tc.TabPages(tcpg.name).Image = bmp

 

3、方法二:你可以根据控件名称获取对应的图片,如 getimage(e.sender.name & "2.png")