C#窗体之整人小程序

今天在人人上看到一个好玩的gif图,是这样的

看着挺好玩。这典型的C#中监听鼠标各种事件的例子。当然不是说只能用C#做。语言无界限嘛。

C#窗体之整人小程序_第1张图片

首先拖一个按钮上去,改文字,然后给这个按钮加上监听让它弹出来一个对话框,平常总是用messagebox。要是java语言的话这会就得继承对话框自定义一个了吧。C#应该也差不多。这次不用java主要是因为虽然java号称到处运行,你也得装jvm啊。一个整人的小程序不能先让人装个jvm再看吧。。

之前弄过一会C#不过都忘的干净了。

这次再试一下。本来说是用一个对话框,然后想去添加个类,然后在工程上点右键看见可以添加窗体,那么直接添加一个窗体不就好了嘛哈哈,然后自然肯定就有show方法了。结果还是很简单的。就是这样就做到了。那么下一部分其实就是给这两个按钮加上各种监听的移动还有变换文字了。个人认为比较 难的点其实就是如何让显示按钮的移动轨迹。在程序一般移动都是闪一下就过去的。那么这次可能要用一个新的线程?计时移动了吧、

VS跟eclipse真是无法比觉得,eclipse在用一个没用过的按钮的时候直接alt+/就能看看开发文档,知道参数是什么 。C#中封装的不彻底。也许是我java用习惯了吧

  private void button2_MouseMove(object sender, MouseEventArgs e)
        {
         
            if (button2.Location.Y > 50 && flag)
            {
                button2.Location = new System.Drawing.Point(button2.Location.X, button2.Location.Y - 1);
            }
            else
            {
                flag = false;
                button2.Location = new System.Drawing.Point(button2.Location.X, button2.Location.Y + 1);
            }
            if (button2.Location.Y > 128)
                flag = true;
        }

方法一,并没有用到计时器。这个实现了大概功能就是当鼠标快要接触到按钮的时候按钮会移动,为了当到一定位置时可以转向。用了一个flag标记。到底的时候再转回来。但是没有动画效果


方法二,从网上查了一下例子,知道了timer这个东西。我记着以前用过,是VB吧。。不管是什么反正最终实现了效果。

   private void button2_MouseMove(object sender, MouseEventArgs e)
        {
            run();

        }
        private void run()
        {
            timer1.Interval = 10;
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (button2.Location.Y >= 50 && flag)
            {
                button2.Location = new System.Drawing.Point(button2.Location.X, button2.Location.Y - 1);
            }
            else
            {
                flag = false;
                button2.Location = new System.Drawing.Point(button2.Location.X, button2.Location.Y + 1);
            }
            if (button2.Location.Y >=button1.Location.Y|| button2.Location.Y < 50)
            {
                flag = true;
                timer1.Stop();
            }
                
        }
这个实现后面就简单了,再加一个计数的,动两回之后变字。

全部代码就这样啦~

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        Boolean flag = true;
        int time = 0;
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("我就知道你会选是的");
        }

        private void Form2_Load(object sender, EventArgs e)
        {

        }

        private void button2_KeyUp(object sender, KeyEventArgs e)
        {
            button2.Location = new System.Drawing.Point(2, 34);
        }

        private void button2_MouseUp(object sender, MouseEventArgs e)
        {
            button2.Location = new System.Drawing.Point(2, 34);
        }

        private void button2_MouseMove(object sender, MouseEventArgs e)
        {
            if (time <= 1)
                run();
            else {

                button1.Text = "不是";
                button2.Text = "是";
            }

        }
        private void run()
        {
            timer1.Interval = 7;
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (button2.Location.Y >= 50 && flag)
            {
                button2.Location = new System.Drawing.Point(button2.Location.X, button2.Location.Y - 1);
            }
            else
            {
                flag = false;
                button2.Location = new System.Drawing.Point(button2.Location.X, button2.Location.Y + 1);
            }
            if (button2.Location.Y >=button1.Location.Y|| button2.Location.Y < 50)
            {
                time++;
                flag = true;
                timer1.Stop();
            }
                
        }

        private void button1_MouseMove(object sender, MouseEventArgs e)
        {

            button2.Text = "不是";
            button1.Text = "是";
        }

        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            MessageBox.Show("关了窗口也改变不了你是煞笔的事实");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show("我就知道你会选是的");
        }

    }
}


为了配合一下样式再改点


C#窗体之整人小程序_第2张图片


你可能感兴趣的:(C#,对话框,c#)