控件:
1.属性:Name--后台获取前台对象,需要使用的属性。
visible--是否显示控件
Enable--是否可用控件
2.事件: 注册事件
触发事件
3.在Program-Main函数中创建的窗口为主窗口程序,次窗口关闭时整个应用程序庀

5.TextBox控件 WordWrap:指示文本框是否换行
                        PasswordChar:文本框输入时显示固定字符
                        SoocllBar:是否显示滚动条
                        事件:TextChange:文本框内容发生改变时调用方法
6.Timer 事件:Enable默认为False,启用更改为True; Tick:每隔固定时间调用方法

7.RadioButton:多选按钮--存在多个时只可选一个,使用GroupBox分组可选择多个

8.MenuStrip:菜单栏(多组按钮)
MDI窗口设计:主窗体MDI属性设置为True,
                        子窗体  from.MdiParent(from1);-设置父窗体。
                        子窗体排列:在主窗体方法中调用--LayoutMdi(MdiLayout.TileHorizontal);(横向排列)
                        LayoutMdi(MdiLayout.TileVertical);(纵向排列)
9.ListBox:listBox1.Items.Add()--列表项,listBox1.SelectedIndex--当前所选中列表中项目的索引
事件:
    private void listBox1_DoubleClick(object sender, EventArgs e)
    {
        SoundPlayer sp = new SoundPlayer();//多媒体音乐播放器类
        sp.SoundLocation = musicFullPath[listBox1.SelectedIndex];//音乐文件的全路径
        sp.Play();
    }
10.打开文件:private void btn_Openfile_Click(object sender, EventArgs e)
    {
        OpenFileDialog opf = new OpenFileDialog();
        opf.Title = "请选择文件";
        opf.InitialDirectory = @"C:\Users\qweasd\Music";
        opf.Multiselect = true;
        opf.Filter = "音乐文件|*.wav|所有文件|*.*;";
        opf.ShowDialog();
        //获得在该文件夹下选择的所有文件的全路径
        string[] musicFiles = opf.FileNames;
        for (int i = 0; i < musicFiles.Length; i++)
        {
            listBox1.Items.Add(Path.GetFileName(musicFiles[i]));//从全路径中截取文件名方法,将文件名显示在ListBox中
            musicFullPath.Add(musicFiles[i]);//所有选中音乐的全文件路径列表
        }

    }

Winform线程:窗体加载时不开启跨线程检测
private void Form1_Load(object sender, EventArgs e)
    {
        //允许不同线程间进行数据访问
        Control.CheckForIllegalCrossThreadCalls = false;
    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if(th!=null)
        {
            //子线程不为空时,随主线程关闭同时关闭子线程
            th.Abort();
        }
    }

Thread th = new Thread(StartRun);//此线程执行的方法/或传入委托/表达式
th.IsBackground = true;//后台运行
th.Start();//方法需要传递参数时可写在Start中“objecr”参数在方法中转为子类对象