Foxtable(狐表)用户栏目专家坐堂 → [求助]在窗口中打开包含richtextbox控件的窗口时鼠标右键菜单偏离


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

主题:[求助]在窗口中打开包含richtextbox控件的窗口时鼠标右键菜单偏离

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


加好友 发短信
等级:四尾狐 帖子:963 积分:8510 威望:0 精华:0 注册:2012/10/3 13:25:00
[求助]在窗口中打开包含richtextbox控件的窗口时鼠标右键菜单偏离  发帖心情 Post By:2017/11/8 21:23:00 [只看该作者]

[求助]在窗口中打开包含richtextbox控件的窗口时鼠标右键菜单偏离

 


此主题相关图片如下:截屏图片.jpg
按此在新窗口浏览图片

 

窗口打开窗口代码:

Forms("导航窗口").Controls("SplitContainer2").Panel1Collapsed = True  '隐藏导航栏

Dim PB As WinForm.Panel = e.Form.Controls("Panel4")
Dim Name As String = "日记本"
Forms(Name).OPEN(-1000,-1500)
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("panel5").visible = False   '增加此句
PB.BaseControl.Controls.add(Forms(Name).BaseForm)
Forms(Name).BaseForm.left = (pb.width-Forms(Name).BaseForm.width) / 2
Forms(Name).BaseForm.top = (pb.height-Forms(Name).BaseForm.height) / 2
Forms("日记本").open


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/8 21:33:00 [只看该作者]

 例子发上来测试。

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


加好友 发短信
等级:四尾狐 帖子:963 积分:8510 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2017/11/9 22:01:00 [只看该作者]

测试示例做几次都没有成功,但大概找到原因了。

在主窗口内有个"panel1",次窗口显示richtextbox的也是个"panel1"。

当在主窗口显示次窗口时:在次窗口右键点击击鼠标时,右键菜单显示到了主窗口中。

请老师指教。谢谢!

 

1、自定义函数mytxt_MouseDown:

Dim sender = args(0)   'rtf窗口鼠标右键
Dim e = args(1)

Dim f As WinForm.Form = Forms.ActiveForm
If f IsNot Nothing Then
    If e.Button = MouseButtons.Right Then '假定按下的是鼠标右键
        ContextMenus("快捷菜单1").Show(f.controls("panel1"),e.x,e.y) '则在鼠标位置显示快捷菜单
    End If
End If

 

2、窗口打开窗口代码:

Forms("导航窗口").Controls("SplitContainer2").Panel1Collapsed = True  '隐藏导航栏

Dim PB As WinForm.Panel = e.Form.Controls("Panel4")
Dim Name As String = "日记本"
Forms(Name).OPEN(-1000,-1500)
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("panel5").visible = False   '增加此句
PB.BaseControl.Controls.add(Forms(Name).BaseForm)
Forms(Name).BaseForm.left = (pb.width-Forms(Name).BaseForm.width) / 2
Forms(Name).BaseForm.top = (pb.height-Forms(Name).BaseForm.height) / 2
Forms("日记本").open


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/9 23:03:00 [只看该作者]

为什么要用下面这个?

 

Dim f As WinForm.Form = Forms.ActiveForm

 

多个窗口一起使用的使用的时候,控件不要重名就好了。控件名可以用窗口名+本来的名字。


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


加好友 发短信
等级:四尾狐 帖子:963 积分:8510 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2019/6/13 10:33:00 [只看该作者]

甜老师好!

遇到老师楼上质疑的问题了:

我在窗口中的页面集合中有多个richtextbox同时使用,鼠标右键的快捷菜单怎样调用?自定义函数mytxt_MouseDown怎样修改?

谢谢!

 

1、自定义函数mytxt_MouseDown:

Dim sender = args(0)   'rtf窗口鼠标右键
Dim e = args(1)

Dim f As WinForm.Form = Forms.ActiveForm
If f IsNot Nothing Then
    If e.Button = MouseButtons.Right Then '假定按下的是鼠标右键
        ContextMenus("快捷菜单1").Show(f.controls("panel1"),e.x,e.y) '则在鼠标位置显示快捷菜单
    End If
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/13 10:55:00 [只看该作者]

1、可以根据sender获取窗口名称,比如

 

msgbox(sender.parent.name)

msgbox(sender.parent.parent.name)

 

2、你不是可以给 richtextbox 命名的吗?添加的时候,命名,如

 

txt.name = e.form.name & "_abc"

 

然后事件里面直接使用,如

 

msgbox(sender.name)

 


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


加好友 发短信
等级:四尾狐 帖子:963 积分:8510 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2019/6/13 16:55:00 [只看该作者]

老师好!

我在窗口的afterload中命名和赋值没有问题;但是鼠标右键不出现快捷菜单,不知道是哪里的问题?


1、AfterLoad

Dim ct1 As New Windows.Forms.RichTextBox
ct1.Dock = Windows.Forms.DockStyle.Fill
ct1.Name ="RichTextBox1"
e.Form.Controls("Panel1").BaseControl.Controls.Add(ct1)
ct1.DataBindings.Add("text", Tables("表A").Grid.DataSource, "第一列")
ct1.Font = new System.Drawing.Font("楷体", 12)    '字体


Dim ct2 As New Windows.Forms.RichTextBox
ct2.Dock = Windows.Forms.DockStyle.Fill
ct2.Name ="RichTextBox2"
e.Form.Controls("Panel2").BaseControl.Controls.Add(ct2)
ct2.DataBindings.Add("text", Tables("表A").Grid.DataSource, "第二列")
ct2.Font = new System.Drawing.Font("楷体", 12)    '字体

 

Dim ct3 As New Windows.Forms.RichTextBox
ct3.Dock = Windows.Forms.DockStyle.Fill
ct3.Name ="RichTextBox3"
e.Form.Controls("Panel3").BaseControl.Controls.Add(ct3)
ct3.DataBindings.Add("text", Tables("表A").Grid.DataSource, "第三列")
ct3.Font = new System.Drawing.Font("楷体", 12)    '字体

------------------

2、MouseDown----?

If e.Button = MouseButtons.Right Then '假定按下的是鼠标右键

    ContextMenus("快捷菜单1").Show(e.Form.Controls("RichTextBox1"),e.x,e.y) '则在鼠标位置显示快捷菜单
End If

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目66.table

[此贴子已经被作者于2019/6/13 18:35:03编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/13 17:09:00 [只看该作者]

1、你要给richtextbox绑定事件啊;

 

2、代码改成,比如

 

Dim ct1 As New System.Windows.Forms.RichTextBox
ct1.Dock = System.Windows.Forms.DockStyle.Fill
ct1.Name =e.form.name & "_RichTextBox1"
e.Form.Controls("Panel1").BaseControl.Controls.Add(ct1)
ct1.DataBindings.Add("text", Tables("表A").Grid.DataSource, "第一列")
'ct1.text = "在设计窗口的时候,应该先设置好分区面板的方向属性,该属性决定分区面板是水平分割,还是垂直分割"
ct1.Font = new System.Drawing.Font("楷体", 12)    '字体

 

3、需要引用的时候,直接用

 

msgbox(sender.name)

msgbox(sender.parent.name)

 


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


加好友 发短信
等级:四尾狐 帖子:963 积分:8510 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2019/6/13 18:34:00 [只看该作者]

这俩句代码放不进事件,提示未定义sender

msgbox(sender.name)

msgbox(sender.parent.name)



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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/13 18:47:00 [只看该作者]

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目66.table


 回到顶部