24小时热门版块排行榜    

查看: 1099  |  回复: 11

紫黛微颦

铜虫 (小有名气)

[求助] C#中panel的移动和click冲突问题

第一个问题:C#中,在Form里放了个panel,click事件是改变背景色,又写了一个可以拖动的功能,通过mousedown和mousemove实现。但是移动后背景色也改变了。我是想移动后背景颜色不变。求高人解答这是为什么?有木有解决方法啊?
个人认为是不是mousedown和mousemove后,相当于进行了一个单击呢?
第二个问题:还是C#,想设定一个窗口为浮动状态,主窗口是form1.我让form2一直显示在form1上面,点击form2就激活,点击form1,可以编辑form1,form2窗口变灰,如何实现呢?
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2013-06-27 00:31:51
第一个问题:全局设置一个flag,如果有mousemove就设置为true,然后不要在click事件中改变背景,换到mouseup事件中.根据flag是否为true来判断是否需要改变背景.如果是true就不变.

第二个问题没有明白,form2一直在上面是可以的,但是form1会被form2挡住的,怎么能点击form1编辑form1呢?(被挡住了看不到啊,其实是可以编辑的,可是看不到的话,编辑没什么意义)
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2013-06-26 20:40:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

紫黛微颦

铜虫 (小有名气)

第一个我明白了,第二个的意思是form2挡住form1没关系,我移动到一边去。但是怎么可以把form2一直显示在form1前面 呢
3楼2013-06-26 20:46:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

紫黛微颦

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by libralibra at 2013-06-26 20:40:27
第一个问题:全局设置一个flag,如果有mousemove就设置为true,然后不要在click事件中改变背景,换到mouseup事件中.根据flag是否为true来判断是否需要改变背景.如果是true就不变.

第二个问题没有明白,form2一直在上面 ...

第一个我明白了,第二个的意思是form2挡住form1没关系,我移动到一边去。但是怎么可以把form2一直显示在form1前面 呢
4楼2013-06-26 20:46:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

紫黛微颦

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by libralibra at 2013-06-26 20:40:27
第一个问题:全局设置一个flag,如果有mousemove就设置为true,然后不要在click事件中改变背景,换到mouseup事件中.根据flag是否为true来判断是否需要改变背景.如果是true就不变.

第二个问题没有明白,form2一直在上面 ...

我在form1里面触发form2后,form1就再也点不动了。
5楼2013-06-26 20:48:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
紫黛微颦: 金币+10, ★★★★★最佳答案 2013-06-26 20:53:38
jjdg: 金币+1, 感谢参与 2013-06-27 00:32:01
windows窗口是按Z-order排列的,一般有个最顶层窗口,还有个当前活动窗口,
是你的窗口处于顶层,而不是Active的就行,就用SetWindowPos()这个函数。
具体使用如:
SetWindowPos(窗体句柄, HWND_TOPMOST, 窗体左上角x, 窗体左上角y, 窗体宽度w, 窗体高度h, SWP_NOACTIVATE);
2个参数是
const Int32 HWND_TOPMOST = -1;//最顶层
const Int32 SWP_NOACTIVATE = 0x0010;//显示窗体但不获得焦点
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
6楼2013-06-26 20:51:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

紫黛微颦

铜虫 (小有名气)

非常感谢
7楼2013-06-26 20:53:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

引用回帖:
5楼: Originally posted by 紫黛微颦 at 2013-06-26 20:48:46
我在form1里面触发form2后,form1就再也点不动了。...

你的触发方式是不是用了ShowDialog()?这个是显示模态窗体,永远最前而且获得焦点,你可以用Show()而不是ShowDialog()来显示Form2.
另外,看了一下Form类,貌似有Active(),BringToFront(),SendToBack(),Focus()等函数,估计不用API也可以实现窗体置顶,具体看看函数说明写写代码测试一下.
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
8楼2013-06-26 20:58:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lxianw163

禁虫 (著名写手)

本帖内容被屏蔽

9楼2013-06-26 21:55:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

紫黛微颦

铜虫 (小有名气)

引用回帖:
8楼: Originally posted by libralibra at 2013-06-26 20:58:04
你的触发方式是不是用了ShowDialog()?这个是显示模态窗体,永远最前而且获得焦点,你可以用Show()而不是ShowDialog()来显示Form2.
另外,看了一下Form类,貌似有Active(),BringToFront(),SendToBack(),Focus()等函数, ...

我就是用的show,谢谢!我好好研究下

[ 发自手机版 http://muchong.com/3g ]
10楼2013-06-27 08:00:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 紫黛微颦 的主题更新
信息提示
请填处理意见