zoukankan      html  css  js  c++  java
  • 【2017-05-04】winfrom进程、线程、用户控件

    一、进程

    一个进程就是一个程序,利用进程可以在一个程序中打开另一个程序。

    1、开启某个进程
    Process.Start("文件缩写名");

    注意:Process要解析命名空间。


    2、通过绝对路径开启某个进程
    Process p = new Process();
    p.StartInfo = new ProcessStartInfo("要打开的程序绝对路径");
    p.Start();

    3、获取全部开启的进程:返回的是一个Process类的数组
    Process[] pro = Process.GetProcesses();

    4、杀死进程
    对象.Kill();

    5、常用的开启网页注册账号:
    Process.Start("http://.....");

     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Diagnostics;
     6 using System.Drawing;
     7 using System.Linq;
     8 using System.Text;
     9 using System.Windows.Forms;
    10 
    11 namespace WindowsFormsApplication1
    12 {
    13     public partial class Form1 : Form
    14     {
    15         public Form1()
    16         {
    17             InitializeComponent();
    18         }
    19 
    20         private void button1_Click(object sender, EventArgs e)
    21         {
    22             //限制可以选择的文件类型
    23             openFileDialog1.Filter = "应用程序|*.exe";
    24 
    25             DialogResult dr = openFileDialog1.ShowDialog();
    26             if (dr == DialogResult.OK)
    27             {
    28                 //将选中文件的路径放到textBox1里
    29                 textBox1.Text = openFileDialog1.FileName;
    30             }
    31         }
    32 
    33         private void button2_Click(object sender, EventArgs e)
    34         {
    35             //先解析Process,实例化。
    36             Process pro = new Process();
    37 
    38             //将路径参数实例化出来。
    39             ProcessStartInfo psi = new ProcessStartInfo(textBox1.Text);
    40 
    41             //设置打开路径需要一个ProcessStartInfo类型参数。
    42             pro.StartInfo = psi;
    43 
    44             //调用他的打开方法
    45             pro.Start();
    46         }
    47 
    48         private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    49         {
    50             //打开默认浏览器,网址是qq。
    51             Process.Start("http://www.qq.com");
    52         }
    53 
    54         private void button3_Click(object sender, EventArgs e)
    55         {
    56             //获取电脑上开着的所有进程,返还一个Process数组
    57             Process[] pro= Process.GetProcesses();
    58 
    59             //遍历数组中每一个进程
    60             foreach (Process p in pro)
    61             {
    62                 //把进程打印在richTextBox1中
    63                 richTextBox1.Text += p.ToString() + "
    ";
    64                 
    65                 //关闭进程,遍历一个关一个,慎用!
    66                 //p.Kill();
    67             
    68             }
    69         }
    70     }
    71 }

    二、线程

    每个程序都有一个主线程,控制窗体。

    如果主线程要执行的代码需要占用很多时间,就需要将这些要执行的代码另开一个线程来执行。

    Thread要解析命名空间。

    //使后台线程可以跨线程访问相应的对象。写在构造函数中。
    Control.CheckForIllegalCrossThreadCalls = false;

    //开一个新线程参数放方法的委托。 
    Thread th1 = new Thread(test1);

    //让这个线程变成后台线程,主线程关闭的时候后台线程也关闭。
    th1.IsBackground = true;

    //开始执行线程
    th1.Start();

    //线程关闭
    th1.Abort();

    将该线程要做的事写成一个没有返回值的方法test1。

    这个方法可以没有参数,也可以有一个参数但这个参数必须是object类型

    如果方法需要一个参数,在线程开始里边把这个参数传过去。

    将这个方法委托到该线程上去。

    为了防止线程在关闭主窗口时的延迟关闭导致的程序报错,

    在窗口的FormClosing事件中判断线程是否关闭了,如果还未关闭关闭线程。

    三、用户控件

    用户控件,顾名思义就是用户自己组成的控件。

    1、制作用户控件:

    在项目中添加新建项选用户控件,改个名字,添加。

    注意:在用户控件的生成代码中把里面空间的访问修饰符都改为public。

    制作完以后,生成一下,然后在工具箱中就会有这个用控件。

     

    要想给用户控件中的控件设置属性内容,只能用代码设置。

  • 相关阅读:
    bzoj1015星球大战(并查集+离线)
    bzoj1085骑士精神(搜索)
    bzoj1051受欢迎的牛(Tarjan)
    左偏树学习
    hdu1512 Monkey King(并查集,左偏堆)
    左偏树(模板)
    PAT (Basic Level) Practice (中文) 1079 延迟的回文数 (20分) (大数加法)
    PAT (Basic Level) Practice (中文) 1078 字符串压缩与解压 (20分) (字符转数字——栈存放)
    PAT (Basic Level) Practice (中文) 1077 互评成绩计算 (20分) (四舍五入保留整数)
    PAT (Basic Level) Practice (中文) 1076 Wifi密码 (15分)
  • 原文地址:https://www.cnblogs.com/qq609113043/p/6808023.html
Copyright © 2011-2022 走看看