Foxtable(狐表)用户栏目专家坐堂 → 求助:如何实现当前窗体中的按钮标题 点击后 自动将对应按钮标题的窗体加入窗体呢?目前已经实现单个按钮加入,如何实现通用多个按钮加入,如逛逛老师的那种任务栏名称通用获取。


  共有2837人关注过本帖树形打印复制链接

主题:求助:如何实现当前窗体中的按钮标题 点击后 自动将对应按钮标题的窗体加入窗体呢?目前已经实现单个按钮加入,如何实现通用多个按钮加入,如逛逛老师的那种任务栏名称通用获取。

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
求助:如何实现当前窗体中的按钮标题 点击后 自动将对应按钮标题的窗体加入窗体呢?目前已经实现单个按钮加入,如何实现通用多个按钮加入,如逛逛老师的那种任务栏名称通用获取。  发帖心情 Post By:2015/10/9 17:43:00 [显示全部帖子]

求助:如何实现当前窗体中的按钮标题 点击后 自动将对应按钮标题的窗体加入窗体呢?目前已经实现单个按钮加入,如何实现通用多个按钮加入,如逛逛老师的那种任务栏名称通用获取。

目前代码如下:(经过自查 我应该是把代码位置放错了地方,当然通用代码也没有写正确,红色部分)

Dim PB As WinForm.Panel = e.Form.Controls("Panel1")

Dim ABC As WinForm.Button = e.Form.Controls("Button1")  

Dim Name As String = abc.Text
Forms(Name).OPEN(-1000,-1000)
Forms(Name).BaseForm.TopLevel = False
Forms(Name).BaseForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Forms(Name).BaseForm.Dock = System.Windows.Forms.DockStyle.Fill

PB.BaseControl.Controls.Clear
PB.BaseControl.Controls.add(Forms(Name).BaseForm)

 


图片点击可在新窗口打开查看此主题相关图片如下:63ee.tmp.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:6428.tmp.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍) Dim Name As String = e.Sen...  发帖心情 Post By:2015/10/9 18:13:00 [显示全部帖子]

大红袍老师 根据你在其他帖子中提到的解决窗体加入窗体闪烁问题解决法子

Forms(Name).OPEN(-1000,-1000)

还是会出现闪烁

 

同时,上述窗体加入窗体中的那代码修正后,应该在放在哪个事件中呢?

而不是单独每个控件都加入CHICK代码

 

刚刚我测试了下 如果加入按钮控件到任务栏中,再设置导航栏中的点击事件代码,会提示任务栏中没有

.NET Framework 版本:2.0.50727.6419
Foxtable 版本:2014.11.11.1
错误所在事件:窗口,主窗体,NavBar1,Click
详细错误信息:
未找到类型“NavBar”的公共成员“Text”。

 

 

在导航栏中加入任务栏,在将按钮加入到任务栏,结果代码不执行。

 

经过多种方法,都没有实现多个按钮 单独点击后对应弹出窗体,目前只能每个按钮都写入一个点击事件代码,进行加载

 

求通用加载方法,谢谢


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)e.sender.SelectedPage.ButtonText  发帖心情 Post By:2015/10/9 18:42:00 [显示全部帖子]

代码放在哪个事件呢?我放在导航栏中的点击事件或放在任务栏中的点击事件都不能实现

 


图片点击可在新窗口打开查看此主题相关图片如下:1038.tmp.jpg
图片点击可在新窗口打开查看

如图有两个按钮

在按钮不加入楼上代码 直接在导航栏中加入代码  效果无


是否是我代码放错了位置  还是思路出现了错误

在导航栏中的属性放在代码也没有达到效果

 


图片点击可在新窗口打开查看此主题相关图片如下:1161.tmp.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)放在控件的click事件啊  发帖心情 Post By:2015/10/9 19:14:00 [显示全部帖子]

每个对应的按钮控件点击事件中啊?这样得每个按钮控件都添加对应代码咯!目前我是这样的,但是感觉按钮多了的话 有些费时

有没有快速操作的方法呢?

 

至于刚刚提到的窗体闪烁问题 找到了你提供的一个办法

利用如下代码进行了绘制控件解决:


e.Form.StopRedraw()
 '动态增加或删除控件的代码
e.Form.ResumeRedraw()


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)那你就写到窗口的全局click事件里去。...  发帖心情 Post By:2015/10/9 19:50:00 [显示全部帖子]

写在窗口全局点击事件中的话 如果点导航栏就会报错哦

 

e.sender.SelectedPage.ButtonText

e.sender.Text

 

以上两个代码写法都会报错  当点导航栏标签的时候。

 

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)加入判断 Select Case e.Se...  发帖心情 Post By:2015/10/9 20:42:00 [显示全部帖子]

大红袍老师 谢谢  代码如下完美运行

Select Case e.Sender.Name
    Case "Button1", "Button2","合同录入管理","设计人员管理"      
        e.Form.StopRedraw()
        '动态增加或删除控件的代码     
        Dim PB As WinForm.Panel = e.Form.Controls("Panel1")
        Dim Name As String = e.Sender.Text
        Forms(Name).OPEN(-1000,-1000)
        Forms(Name).BaseForm.TopLevel = False
        Forms(Name).BaseForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
        Forms(Name).BaseForm.Dock = System.Windows.Forms.DockStyle.Fill
        PB.BaseControl.Controls.Clear
        PB.BaseControl.Controls.add(Forms(Name).BaseForm)
        e.Form.ResumeRedraw()      
End Select

 

进一步深入,如果我想把任务栏里的选择不同连接项的窗体加入在这个主窗体点击代码 是不是也要加一个判断

Select Case e.link.Name  直接就报错了

下列代码该如何进行代码变通呢

Dim PB As WinForm.Panel = e.Form.Controls("Panel1")
Dim Name As String = e.Link.Name
Forms(Name).OPEN(-1000,-1000)
Forms(Name).BaseForm.TopLevel = False
Forms(Name).BaseForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Forms(Name).BaseForm.Dock = System.Windows.Forms.DockStyle.Fill

PB.BaseControl.Controls.Clear
PB.BaseControl.Controls.add(Forms(Name).BaseForm)

 


 


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)如果全都是,就不需要加判断,如果有...  发帖心情 Post By:2015/10/9 21:04:00 [显示全部帖子]

如果直接代码如下:

Select Case e.Sender.Name
    Case "Button1", "Button2","合同录入管理","设计人员管理"      
        e.Form.StopRedraw()
        '动态增加或删除控件的代码     
        Dim PB As WinForm.Panel = e.Form.Controls("Panel1")
        Dim Name As String = e.Sender.Text
        Forms(Name).OPEN(-1000,-1000)
        Forms(Name).BaseForm.TopLevel = False
        Forms(Name).BaseForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
        Forms(Name).BaseForm.Dock = System.Windows.Forms.DockStyle.Fill
        PB.BaseControl.Controls.Clear
        PB.BaseControl.Controls.add(Forms(Name).BaseForm)
        e.Form.ResumeRedraw()      
End Select

 

Dim PB1 As WinForm.Panel = e.Form.Controls("Panel1")
Dim Name1 As String = e.Link.Name
Forms(Name1).OPEN(-1000,-1000)
Forms(Name1).BaseForm.TopLevel = False
Forms(Name1).BaseForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Forms(Name1).BaseForm.Dock = System.Windows.Forms.DockStyle.Fill

PB1.BaseControl.Controls.Clear
PB1.BaseControl.Controls.add(Forms(Name1).BaseForm)

 

运行报错如下:

 


图片点击可在新窗口打开查看此主题相关图片如下:7b68.tmp.jpg
图片点击可在新窗口打开查看

 

红色部分代码是不是需要先做一个定义变量 然后获取值呢?

如果定义变量为

Dim abc As WinForm.TopicBar = e.Form.Controls("TopicBar1")

发现该变量属性没有Link.Name的方法 求解


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)写到控件的事件啊,不能写到click事件...  发帖心情 Post By:2015/10/9 21:13:00 [显示全部帖子]

之前就写在控件事件里的

 

想进一步深化 直接放在窗体全局点击事件中,看样子这个是不行的,只能两种方法结合了,谢谢大红袍老师!


 回到顶部