C#如何做一个窗体,总在前端但不被鼠标点击,好像听音乐用什么前端软件的歌词显示面板那样

C#窗体常用属性_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C#窗体常用属性
上传于||文档简介
&&C​#​窗​体​常​用​属​性
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
你可能喜欢C# winform窗体有个button按钮,我想鼠标点击它不松一直会触发一个事件?是button的哪个事件?_百度知道
C# winform窗体有个button按钮,我想鼠标点击它不松一直会触发一个事件?是button的哪个事件?
当鼠标松开再次点击这个按钮时又是做另一件事?谢谢大家!?这应该怎么处理呢?或是button的什么事件呢
提问者采纳
mousedown / mouseup / Timer &#47自己控制
提问者评价
其他类似问题
为您推荐:
其他5条回答
鼠标每按下一次 ClickTime + 11。鼠标按下不松事件是 MouseDown,2,Private int
ClickTime。.鼠标松开再次点击这个按钮时又是做另一件事然后你就可以根据ClickTime的不同,做不同的动作?你可以定义一个全局变量
鼠标 按下 不松 事件为 mousedown鼠标 按下 弹起 事件为 mouseup鼠标 按下并松开(点击)
事件为 mouseclick你在事件里定义做什么就做什么。
button_press
timer 控件、
鼠标点击的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c#里面如何编写在一定条件下使窗体对鼠标单击失去响应或者恢复响应的代码?_百度知道
c#里面如何编写在一定条件下使窗体对鼠标单击失去响应或者恢复响应的代码?
的确可以使窗体失去响应,我的鼠标一旦移动地快点就会练下两个子……请问还有什么其他比较好的比较简单的使窗体失去,也就是使窗体失去对Form_Click事件的响应我还希望点击“再来一局”按钮后.Click +=Form1_Click_1 却有问题,落子依靠Form_Click事件实现我希望在判断输赢后棋盘上不能落子我在编写一个五子棋程序,棋盘和棋子是直接画在窗体Form里的.Click -= Form1_Click_1,窗体恢复对Click的响应我已经尝试了 this,但对应的使窗体恢复响应的代码this、恢复鼠标单击响应的方法
提问者采纳
如果isReponse=1;则return,isReponse=1;如果要让他失去响应;然後在form的click事件中写判断;如果要回覆就isReponse=0int isReponse=0
提问者评价
成功了,这个方法也很简单,判断语句就行了
来自团队:
其他类似问题
&&&&GameO&&&m);&&&&&&&&const&&&&&&&&&&&&&bool&void&&&&&nbsp.Msg==WM_LBUTTONDOWN)//这里拦截它&&&&WM_LBUTTONDOWN&//直接跳出去;&&&&nbsp,也就是WndPm)&&}&&&{&&&&&&&&&&&&WndProc(ref&&&&&&&nbspprivate&&&nbsp,都一样的主要就是会让你的Form_Click失去事件响应希望对你有帮助.WndProc(ref&&&nbsp,也可以在OnMouseDown中判断也可以;&&&&&&&//WINDOWS消息鼠标左键按下&0x0201;&&if(GameOver==true)//判断如果结束&int&}你可以重载窗体的消息处理;&if(m;&&&&&&&&&&=&&&&&&&&&{&&&&&&&nbsp,也就是鼠标按下的消息将当次不在向下传递&&&&&protected&Message&override&nbsp
为您推荐:
其他2条回答
if(结束)逻辑很简单啊,不用搞那么高端的你能不能直接在事件方法里判断是不是结束啊
你可设一全局变量,用来判断这局是否结束,每次单击时在Form_Click事件做判断,要是没结束接着执行落子事件,要是这局结束,就不执行落子事件。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁2652人阅读
&&&&&&& private int _x, _y;&&&&&&& Image _img = null;&&&&&&& private void pictureBox1_MouseDown(object sender, MouseEventArgs e)&&&&&&& {&&&&&&&&&&& _img = pictureBox1.Image.Clone() as I&&&&&&&&&&& _x = e.X;&&&&&&&&&&& _y = e.Y;&&&&&&& }&&&&&&& private void pictureBox1_MouseUp(object sender, MouseEventArgs e)&&&&&&& {&&&&&&&&&&& int sx = _x & e.X ? _x : e.X;&&&&&&&&&&& int sy = _y & e.Y ? _y : e.Y;&&&&&&&&&&& int w = Math.Abs(_x - e.X);&&&&&&&&&&& int h = Math.Abs(_y - e.Y);&&&&&&&&&&& Graphics g = Graphics.FromHwnd(pictureBox2.Handle);&&&&&&&&&&& g.Clear(pictureBox2.BackColor);&&&&&&&&&&& g.DrawImage(pictureBox1.Image, new Rectangle(<SPAN style="COLOR: #, <SPAN style="COLOR: #, w, h), sx, sy, w, h, GraphicsUnit.Pixel);&&&&&&& }&&&&&&& private void pictureBox1_MouseMove(object sender, MouseEventArgs e)&&&&&&& {&&&&&&&&&&& if (e.Button == MouseButtons.Left)&&&&&&&&&&& {&&&&&&&&&&&&&&& Pen p = new Pen(Color.Red, <SPAN style="COLOR: #);&&&&&&&&&&&&&&& p.DashStyle = System.Drawing.Drawing2D.DashStyle.D&&&&&&&&&&&&&&& Graphics g = Graphics.FromHwnd(pictureBox1.Handle);&&&&&&&&&&&&&&& int sx = _x & e.X ? _x : e.X;&&&&&&&&&&&&&&& int sy = _y & e.Y ? _y : e.Y;&&&&&&&&&&&&&&& int w = Math.Abs(_x - e.X);&&&&&&&&&&&&&&& int h = Math.Abs(_y - e.Y);&&&&&&&&&&&&&&& pictureBox1.Image = _&&&&&&&&&&&&&&& g.DrawRectangle(p, sx, sy, w, h);&&&&&&&&&&& }&&&&&&& }不过这样效果不是很好,最好是这样,你有一个image保存最原始的图片, 画虚线框在这个image的副本上画,然后赋值给pictuebox1,取图片拷贝的时候也从原始的image上取
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:408409次
积分:4664
积分:4664
排名:第3098名
原创:60篇
转载:216篇
评论:141条
(2)(4)(1)(3)(1)(2)(4)(5)(3)(1)(3)(10)(3)(7)(4)(6)(3)(5)(12)(4)(28)(49)(20)(90)(6)跟我学做c#皮肤美化(六)
&& & & & & & & & & & &--MainForm窗体的制作3
在上一篇中,我们虽然已经做出界面大概的样子出来了。不过还是存在着一些问题,包括运行缓慢和闪烁等一些问题。那么下面就让我们一起来解决吧。
先来说说闪烁和缓慢的问题。
我认为最主要的还是由于我们设置了transparent所造成的。网上的一些解释是这样的,当窗体显示时我们设置的透明部分在显示的时候会先呈现出黑色然后再在上面显示图片。这样一来控件一多我们很容易就看见了。不管解释的对不对,反正我们知道设置窗体的transparent肯定是对窗体的显示有一些负面影响的(接下来的窗体避免设置transparent也确实证明了这一点)。既然是这个transparent&搞的鬼&,那能不能不用它来实现窗体的透明呢?答案是我还没找到。但是不代表这个问题解决不了。
我们不妨先来回忆一下我们为什么要使用这个transparent。还记得下面这张图吧?
我们运用transparent就是为了解决四个角上透明度的问题。现在我们不想使用transparent怎么办呢?其实简单的换个思路就行了。我们为什么非要那边是透明的啊,它不透明就让它不透明呗,我们只要在显示的时候&切掉&它不就行了。也就是说我们自己先要在原有的窗口内画出一个圆矩形出来然后四个直角就自然切掉不要了。那怎么画怎么切?看下面的系统API,
第一个是用来画的,而第二个当然就是用来切的啦。MSDN上面已经给我们解释的很清楚了。CreateRoundRectRgn前面四个参数分别是左上角和右下角的坐标,我们在画的时候只需要将其起点设置为(1,1)终点设置为(this.width-1,this.height-1)就能得到一个外边距相当于1的矩形啦。如图:
图中的蓝色部分就是我们需要省略的部分。
最后两个参数分别是椭圆形的宽高(其实就是我们切的圆角的弧度啦)。这个函数执行成功了就会返回切好的区域的句柄,然后我们只要在SetWindowRgn中拿到这个handle就可以把我们需要的圆矩形部分切下来啦。
可是好像又有一个问题那!到底该什么时候切呢?铅笔,刀都准备好了,但总不能让他傻傻站那儿不知道什么时候动手吧!时机很重要。我们应该让他在窗体大小变化的时候就行动一次,这样才能保证每次窗体大小变化(比如说最大化)后还能保证是圆角矩形。好啦,原理讲好了,现在该真正动手干活咯。
首先第一步就是切掉原来窗体的transparent,这个就不用我多说了吧!会设置还不会取消嘛!接着就重写一个OnResize函数就可以啦。两句话搞定,
protected overridevoid OnResize(EventArgse)
base.OnResize(e);
intRgn = Win32.CreateRoundRectRgn(1, 1, this.Width - 1, this.Height- 1, 7, 7);
Win32.SetWindowRgn(this.Handle, Rgn, true);
好了,来运行一下看看效果吧!
现在我们再来最大化,最小化还原看看效果确实比上次好多了。基本看不到左上角还有闪烁的情况了,而且响应也蛮快的。不过大家也从上图看出来了,就是最大化的时候周围有空隙的啊。其实也不难想到这些空隙就是我们切掉不要的那一部分窗体。要想最大化的时候窗体完全覆盖只要在最大化的时候稍微增加一下窗体的宽和高就是了。于是我们在上一期的代码中再对最大化事件做以下修改。
private voidbtmax_Click(object sender, EventArgs e)
this.btmax.Top-= 30;
this.btres.Top= 0;
//最大化之前记录窗口信息便于缩小
orginHeight = this.H
orginWidth = this.W
X = this.Location.X;
Y = this.Location.Y;
this.Top= 1;
this.Left= 1;
BorderWidth = Screen.PrimaryScreen.WorkingArea.Width +4;
BorderHeight = Screen.PrimaryScreen.WorkingArea.Height +4;
st = stat.M
其中这个窗体的宽和高我试了一下,加4正好差不多能覆盖原来的空隙了。大家可以试一下。
OK,闪烁终于算是解决了。接下来实现窗体大小的拖动功能。
这个问题还是由于我们的窗体样式为None导致的(看来这个None还真是搞出了不少麻烦呢)。不过不管怎样,咱还是想办法解决吧。前面的窗口移动我们是通过API来完成的,没有疑问的大小的调整我们也借助系统API发送消息来完成。Win32.SendMessage(Handle,274, 61440 + x, 0);其中的x代表了不同的数字,当数字不同的时候产生的拖动大小的方向也不同。具体的数字代表的方向大家可以看我的代码。
现在最主要的问题就是实现鼠标到达窗体边缘时可以拖动。这里我运用了MouseMove这个事件。当鼠标到达指定区域时我们通过判断鼠标左键是否按下来实现改变大小消息的发送与否。我举一个稍微复杂一点的事件说一下吧。拿右上角来说吧。右上角运用ptbtr_MouseMove这个事件来判断是否更改大小。看图:
我将右上角的区域分为了四个区域。当鼠标分别落在1,2,4区域并按下鼠标的时候我们才相应的赋予x值从而改变窗体大小。那么如何判断鼠标经过的区域呢?我们可以直接用MouseEventArgs e参数中的x,y属性。该属性表明了鼠标在相应的panel或者picture下的相对位置。还好是相对位置,不然我们又要麻烦了,呵呵。
看代码:首先我们用if (!sizeAble)判断是否设置了可更改大小。当可以改变大小时,我们再逐一判断鼠标左键按下时鼠标的位置,并相应作出更改。代码中我那个点是采用3个像素的位置作为分界线的(就是1和4的分界区),这个位置如果大家觉得不合适可以自己更改。只要按照上面的思路去一个一个的设置窗体最后肯定会获得你想要的效果的。
在这里顺便打一下小广告^ ^,这个窗体皮肤的效果已经被我用在了我编写的一个小软件&上网计时小助手&上了,如果想看看皮肤的运用效果不妨去看看那个软件哦!嘿嘿....软件地址:
好了,窗体部分经过3个部分的讲解终于算是结束了。
相信大家对控件的编写也有了一定的&感觉&了吧。这个窗体其实说起来还有一些地方不够完善的,比如说窗体的起始位置没有地方设置,再比如说当窗体上的控件太多的时候加载显示窗体还是有一定程度上的不好的显示现象的等等。这些缺点还只是我暂时发现的,肯定还有其他一些不好的地方就等待着细心而认真的你发现并去尝试着解决它了。
阅读(...) 评论()

我要回帖

更多关于 听音乐用什么前端好 的文章

 

随机推荐