一、进程

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

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://.....");

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
//限制可以选择的文件类型
openFileDialog1.Filter = "应用程序|*.exe"; DialogResult dr = openFileDialog1.ShowDialog();
if (dr == DialogResult.OK)
{
//将选中文件的路径放到textBox1里
textBox1.Text = openFileDialog1.FileName;
}
} private void button2_Click(object sender, EventArgs e)
{
//先解析Process,实例化。
Process pro = new Process(); //将路径参数实例化出来。
ProcessStartInfo psi = new ProcessStartInfo(textBox1.Text); //设置打开路径需要一个ProcessStartInfo类型参数。
pro.StartInfo = psi; //调用他的打开方法
pro.Start();
} private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//打开默认浏览器,网址是qq。
Process.Start("http://www.qq.com");
} private void button3_Click(object sender, EventArgs e)
{
//获取电脑上开着的所有进程,返还一个Process数组
Process[] pro= Process.GetProcesses(); //遍历数组中每一个进程
foreach (Process p in pro)
{
//把进程打印在richTextBox1中
richTextBox1.Text += p.ToString() + "\r"; //关闭进程,遍历一个关一个,慎用!
//p.Kill(); }
}
}
}

二、线程

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

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

Thread要解析命名空间。

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

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

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

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

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

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

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

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

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

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

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

三、用户控件

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

1、制作用户控件:

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

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

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

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

winfrom进程、线程、用户控件的更多相关文章

  1. C# WinFrom 跨线程访问控件

    1.跨线程访问控件委托和类的定义 using System; using System.Windows.Forms; namespace ahwildlife.Utils { /// <summ ...

  2. 在VisualStudio 工具箱中隐藏用户控件

    当我们创建一个用户控件后,VisualStudio会自动将其添加到工具箱中,本来这是一个比较贴心的设计.但是,有的时候,我们并不想将用户控件放到工具箱中. 例如:在WPF中,为了避免一个页面的控件过多 ...

  3. 【2017-05-04】winfrom进程、线程、用户控件

    一.进程 一个进程就是一个程序,利用进程可以在一个程序中打开另一个程序. 1.开启某个进程Process.Start("文件缩写名"); 注意:Process要解析命名空间. 2. ...

  4. winfrom获取用户控件里的控件对象

    如何获取用户控件里的控件对象呢,其实思路也是很简单的, 比如有一个panel 用户控件 里面有许多的其他控件. 那么要找出一个Label控件怎么找呢,好的.现在我们就开始 首先,一个foreach循环 ...

  5. 野比的示波器案例(Winfrom用户控件)

    使用该用户控件做的效果图,如果数据正确,可实现 波形.直线.等等效果图...... 对于本程序的认识还是不够深彻.如果有其他方法或算法,欢迎讨论下.将我所能理解的代码都再次标识了一番. ------- ...

  6. [C#] Control.Invoke方法和跨线程访问控件(转载)

    转载前,在网上找了好多INVOKE方法的文章,就这个看着还可以,明白了大概,以后再深用的时候再研究 ,废话少说上转载(连转载都说的这么有气势,哈哈)   在设计界面时,我们经常需要将一些需要时间才能完 ...

  7. [C#] Control.Invoke方法和跨线程访问控件

    在设计界面时,我们经常需要将一些需要时间才能完成的操作放在另一个线程(不同于UI主线程)中执行.但是这些操作可能需要将其结果或完成情况通知主线程,比如调用窗体的方法,或者触发事件(由界面响应事件),很 ...

  8. 无边框窗体、用户控件、Timer控件

    一.无边框窗体1 最大化.最小化以及关闭按钮制作实际上就是更换点击前.指向时.点击时的图片 (1)将图片放在该文件夹的Debug中,获取图片的路径Application.StartupPath + & ...

  9. WebFormViewEngine及用户控件寻址bug

    在做我的网站的时候遇到了主题切换的问题,特总结与大家共享. 熟悉asp.net mvc的朋友都知道,mvc中,默认情况下视图都在views文件夹下放着.要想改变文件必须重写WebFormViewEng ...

随机推荐

  1. IE 浏览器不支持 ES6 Array.from(new Set( )) SCRIPT438: 对象不支持“from”属性

    [转]解决老浏览器不支持ES6的方法 现象: Array.from(new Set( )) SCRIPT438: 对象不支持“from”属性或方法   解决方法: 安装babel 引入browser. ...

  2. LeetCode - 766. Toeplitz Matrix

    A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element. Now given ...

  3. jenkins git 之 Advanced clone behaviours

    jenins 上的 Git Plugin插件,默认是下载完整的历史版本,随着分支约多,历史版本约多,整个文件会很大,下载常常会超时. 单独的git命令可以使用以下方式来优化 git clone --d ...

  4. devmapper: Thin Pool has 154464 free data blocks which is less than minimum required 163840 free dat

    清理exited进程: docker rm $(docker ps -q -f status=exited) 清理dangling volumes: docker volume rm $(docker ...

  5. 解决vue单页路由跳转后scrollTop的问题

    作为vue的初级使用者,在开发过程中遇到的坑太多了.在看页面的时候发现了页面滚动的问题,当一个页面滚动了,点击页面上的路由调到下一个页面时,跳转后的页面也是滚动的,滚动条并不是在页面的顶部 在我们写路 ...

  6. hadoop伪分布环境快速搭建

    1.首先下载一个完成已经进行简单配置好的镜像文件(hadoop,HBASE,eclipse,jdk环境已经搭建好,tomcat为7.0版本,建议更改为tomcat8.5版本,运行比较稳定). 2安装V ...

  7. juqery 给本身的class加上一个class 或也可以实现关注商品,取消关注商品

    $("#goods1").on("click",".ICON-fen-LOVE",function(){ var $this = $(thi ...

  8. Python学习之旅(十九)

    Python基础知识(18):面向对象高级编程(Ⅰ) 使用__slots__:限制实例的属性,只允许实例对类添加某些属性 (1)实例可以随意添加属性 (2)某个实例绑定的方法对另一个实例不起作用 (3 ...

  9. vlan之间的通信-单臂路由与三层交换之间的互通

    注:本试验基于单臂路由通信,三层交换通信,请完成以上两个实验,并保证能够通信 熟练掌握单臂路由的配置 熟练掌握三层交换的配置 三层交换与单臂路由的互通 实验原理 三层交换机在原有二层交换机的基础之上增 ...

  10. php const常量 不能使用字符串连接符.链接

    class jdpay extends pay { const BASE_URL = "https://mapi.jdpay.com/npp10/"; private $agree ...