求助:自定义控件在模态设计下点击事件

scwyyg 2015-10-21 01:30:29

求助各位大侠:
图上左控件是我参考System.Windows.Forms.TabControl控件,开发的一个自定义控件,功能除在Form窗口中模态设计不能切换点击标签外,其它都实现了!
现求助大侠们,给点思路,nTabControl控件实现右侧TabControl控件边框获得焦点时,头部标签点击切换事件。
在WndProc函数或CreateParams属性中实现都行。
谢谢各位大侠了!
...全文
164 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
scwyyg 2015-10-23
  • 打赏
  • 举报
回复
请教了好多高手,在网上搜了一大堆,目前,好象没有解决方案。 算了,结帖! 谢谢各位的帮助!
ajianchina 2015-10-22
  • 打赏
  • 举报
回复
引用 10 楼 scwyyg的回复:
谢谢ajianchina: 我已经重写一个newLayout函数,布局和内容都有效控制了,但在Form窗口测试时不行。 布局没问题,主要是nTabPage面积Rectangle没有获取鼠标事件!
谢谢ajianchina: 我已经重写一个newLayout函数,布局和内容都有效控制了,但在Form窗口测试时不行。 布局没问题,主要是nTabPage面积Rectangle没有获取鼠标事件![/quote] 你把用户控件的 tabpage可见级别设为public就行了。 然后在你的Form里直接: 用户控件名.tabpage.事件 += 事件名; private void 事件名(object sender, EventArgs e) { //你的事件执行过程 }
Poopaye 2015-10-22
  • 打赏
  • 举报
回复
要在设计视图下响应事件,你需要一系列东西来实现,具体参阅IDesigner接口的说明 https://msdn.microsoft.com/en-us/library/system.componentmodel.design.idesigner%28v=vs.110%29.aspx
scwyyg 2015-10-22
  • 打赏
  • 举报
回复
谢谢ajianchina: 我已经重写一个newLayout函数,布局和内容都有效控制了,但在Form窗口测试时不行。 布局没问题,主要是nTabPage面积Rectangle没有获取鼠标事件!
ajianchina 2015-10-22
  • 打赏
  • 举报
回复
拖控件是好,但是一种“病”,当你鼠标难以触及的时候就会变得抓狂了。 你为何就不能在代码中对控件内的布局、内容进行控制呢?这个不难吧,换成我都不会去考虑将这个用户控件都回去拖到form上,全部可以在代码中解决问题。
scwyyg 2015-10-22
  • 打赏
  • 举报
回复
各位大侠,请回帖啊! 用VC++也行啦!
scwyyg 2015-10-21
  • 打赏
  • 举报
回复
左面上下都是我写的控件,右面上下是微软的! 对名字区别:是自动非更改! Designer("System.Windows.Forms.Design.TabControlDesigner...是将控件拖入窗体,自动添加两个tab,我自已写了一个。 [ClassInterface(ClassInterfaceType.AutoDispatch)] [ComVisible(true)] [DefaultEvent("SelectedIndexChanged")] [DefaultProperty("TabPages")] 这些委托,就添加了,除了不能在非运行模式下点击标签外,其它,都正确。 看来,问题不好处理,在代码中添加timer,判断鼠标在某Rectangle区域内,定义数组bool[]判断,颜色改变恢复和点击功能是完全可实现的,但内存开消受不了。 故,向各位请教。
crystal_lz 2015-10-21
  • 打赏
  • 举报
回复
谁知道你代码是怎么写的。。。 而且完全没有看出 你左边的 和 右边的 除了名字还有什么区别 十有八九 左边的 tabcontrol 被放入了一个容器中 而这个容器再作为一个控件 添加到 窗体上 说以设计器无法处理 你的tab
  • 打赏
  • 举报
回复
[ClassInterface(ClassInterfaceType.AutoDispatch)]
    [ComVisible(true)]
    [DefaultEvent("SelectedIndexChanged")]
    [DefaultProperty("TabPages")]
    [Designer("System.Windows.Forms.Design.TabControlDesigner, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
    public class TabControl : Control
对于不知道的,你可以直接看微软到底做了什么…… 当然我只是告诉你可以参考,具体哪个起的作用我也不晓得……
ajianchina 2015-10-21
  • 打赏
  • 举报
回复
楼主,我大概明白你的意思,你误用了“模态”这个概念 你其实遇到的问题就是tab控件拼装成用户控件后,拖入的该用户控件无法对内部tab标签进行切换。 这个不算事啊,你完全可以通过代码编写的方式将你需要编写的内容插入到标签页的,在你的用户控件中写好属性,还有控件可见性,还有方法,在你拖入该控件后,你就可以控制了,好了,我就说这么多了。
scwyyg 2015-10-21
  • 打赏
  • 举报
回复
我的意思是:我开发的nTabControl控件,在Form窗口中,只能在exe运行或调试下才有nTabPage标签的切换功能,不能在非exe运行下切换nTabPage标签,要想实现,象微软的TabControl控件那样,在非调试运行模式(模态设计下)tabPage的切换功能;用鼠标在Form窗中点击切换。 不知我说明白没有版主!
  • 打赏
  • 举报
回复
没看懂意思, nTabControl控件实现右侧TabControl控件边框获得焦点时,头部标签点击切换事件 能更具体吗?
scwyyg 2015-10-21
  • 打赏
  • 举报
回复
请大侠位位提供帮助,谢谢,谢谢!

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧