• 无边框窗体、后台创建控件、简单通讯


    一、无边框窗体

    1、控制按钮如何制作:

    就是放置可以点击的控件,不局限于使用按钮或是什么别的,只要可以点击能触发点击事件就可以了

    (1)美化一下的话那就可以把鼠标移入,移出,按下三个事件让按钮改变样式

    (2)如何获取图片的相对路径

    //鼠标移入时显示的图片
            private void pictureBox1_MouseEnter(object sender, EventArgs e)
            {
                pictureBox1.BackgroundImage = Image.FromFile(Application.StartupPath + "\..\..\images\btn_close_highlight.png");
            }
    
            //鼠标移走时显示的图片
            private void pictureBox1_MouseLeave(object sender, EventArgs e)
            {
                pictureBox1.BackgroundImage = Image.FromFile(Application.StartupPath + "\..\..\images\btn_close_disable.png");
            }
    
            //鼠标摁下时显示的图片
            private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
            {
                pictureBox1.BackgroundImage = Image.FromFile(Application.StartupPath + "\..\..\images\btn_close_down.png");
            }

    (..文件夹名称... 向上翻一个文件夹)


    2、如何让窗体动起来:

    调用窗体移动的API

    如果有其它控件覆盖了窗体,那么写好该控件的点击事件,即鼠标按下的事件委托指向被设置窗体移动的窗体就可以了,


    3、如何让窗体有阴影:方法挺多,可以百度搜索

    案例一:

     public partial class Form1 : Form
        {
    
            //显示右边、下边的阴影
            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);
    
            public Form1()
            {           
                InitializeComponent();
    
                //显示阴影
                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在组件里:

    (1)Enabled - 此控件是否启用

    (2)Interval - 间隔时间,毫秒

    (3)Tick事件 - 间隔指定时间后要执行的代码段

    (4)timer就是个线程,这个线程默认可以跨线程访问对象

  • 相关阅读:
    定时器
    javascript之循环保存数值
    Web 前端之HTML和CSS
    [讲解]容斥原理
    [vijos1048]送给圣诞夜的贺卡<DFS剪枝>
    [vijos1145]小胖吃巧克力<概率dp>
    [noip2012]国王游戏<贪心+高精度>
    [codevs3118]高精度除法<高精度>
    [noip2016]组合数问题<dp+杨辉三角>
    [codevs2370]小机房的树<LCA>
  • 原文地址:https://www.cnblogs.com/juyangchao12/p/5918264.html
Copyright © 2020-2023  润新知