zoukankan      html  css  js  c++  java
  • 无边框窗体、用户控件、Timer控件

    一、无边框窗体

    1 最大化、最小化以及关闭按钮制作
    实际上就是更换点击前、指向时、点击时的图片

    (1)将图片放在该文件夹的Debug中,
    获取图片的路径
    Application.StartupPath + "\图片名.类型"
    (2)若是放在该文件夹的中,
    Application.StartupPath + "\..\..\images\图片名.类型"

    ..文件夹名称... 向上翻一个文件夹,上面的第一个是转义

     pictureBox2.BackgroundImage = Image.FromFile(Application.StartupPath + "\1.png");

    2 窗体动起来
    调用窗体移动的API,如果有其它控件覆盖了窗体,那么写好鼠标按下的事件委 
    托就可以了

    复制代码
    //窗体移动API
            [DllImport("user32.dll")]
            public static extern bool ReleaseCapture();
            [DllImport("user32.dll")]
            public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int IParam);
            public const int WM_SYSCOMMAND = 0x0112;
            public const int SC_MOVE = 0xF010;
            public const int HTCAPTION = 0x0002;
            [DllImport("user32")]
            private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, IntPtr lParam);
            private const int WM_SETREDRAW = 0xB;
    
    
    //记住:在窗体的MouseDown事件中 一定要选择Form1_MouseDown
            private void Form1_MouseDown(object sender, MouseEventArgs e)
            {
                if (this.WindowState == FormWindowState.Normal)
                {
                    ReleaseCapture();
                    SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
                }
            }
    复制代码

    3 让窗体有阴影

    复制代码
    //阴影
    //写在构造函数上面
    private const int CS_DropSHADOW = 0x20000; private const int GCL_STYLE = (-26); [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int SetClassLong(IntPtr hwnd, int nIndex, int dwNewLong); [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int GetClassLong(IntPtr hwnd, int nIndex); //写在构造函数中 SetClassLong(this.Handle, GCL_STYLE, GetClassLong(this.Handle, GCL_STYLE) | CS_DropSHADOW);
    复制代码

    二、后台创建控件

    (1)创建

    复制代码
                PictureBox p = new PictureBox();//创建图片控件,实例化图片控件
                //设置图片
    p.BackgroundImage = Image.FromFile(Application.StartupPath + "\dota_img5.jpg"); p.BackgroundImageLayout = ImageLayout.Stretch; TextBox tb = new TextBox();//创建textBox控件,实例化 flowLayoutPanel1.Controls.Add(p);//放入流式布局的集合中 flowLayoutPanel1.Controls.Add(tb);
    复制代码

    (2)更改控件属性

    复制代码
              foreach (Control ct in flowLayoutPanel1.Controls)
                {
                    if (ct is TextBox)
                    {
                        ((TextBox)ct).Text = "123123";               
                    }  
                }
    复制代码

    三、用户控件
    1 是由其它控件所组成的一种用户自定义控件
    用户控件的主体与Panel相似,但是它却又是独立的一个类
    2 创建
    新建项--用户控件--命名(当成一个panel使用)--放入其他控件,所有内部 
    的控件访问权限都要修改。
    创建完成后显示在工具箱。
    3 使用
    实例化 yonghu yh=new yonghu();//yonghu是我给我创建的这个起的名字
    赋值 yh.textBox1.Text="";
    放入流式布局
    4 可以给用户控件及其中的控件加上鼠标事件
    四、timer在组件里:
    Enabled - 此控件是否启用
    Interval - 间隔时间,毫秒
    Tick事件 - 间隔指定时间后要执行的代码段
    timer就是个线程,这个线程默认可以跨线程访问对象

  • 相关阅读:
    信息学奥赛一本通(C++)在线评测系统——基础(三)数据结构 —— 1363:小球(drop)
    信息学奥赛一本通(C++)在线评测系统——基础(三)数据结构 —— 1363:小球(drop)
    信息学奥赛一本通(C++)在线评测系统——基础(三)数据结构 —— 1363:小球(drop)
    征战蓝桥 —— 2013年第四届 —— C/C++A组第2题——排它平方数
    征战蓝桥 —— 2013年第四届 —— C/C++A组第2题——排它平方数
    征战蓝桥 —— 2013年第四届 —— C/C++A组第2题——排它平方数
    征战蓝桥 —— 2013年第四届 —— C/C++A组第1题——高斯日记
    C#获取文件夹下的所有文件
    C#获取文件夹下的所有文件
    用JS实现加载页面前弹出模态框
  • 原文地址:https://www.cnblogs.com/xtq0313/p/5918590.html
Copyright © 2011-2022 走看看