winform进程线程treeview

不会撩妹的白芒果 不会撩妹的白芒果     2022-08-19     745

关键词:

 

 

进程:
一个程序就是一个进程,但是也有一个程序需要多个进程来支持的情况

进程要使用的类是:Process
它在命名空间:System.Diagnostics;

静态方法Start();
也可以实例化对象,来调用Start()普通方法,但调用普通方法之前需要给
StartInfo属性设置一个对象,来通知它要打开的是哪个进程

复制代码
 private void button1_Click(object sender, EventArgs e)
        {
            Process p = new Process();
            ProcessStartInfo psi = new ProcessStartInfo(textBox1.Text.Trim());

            p.StartInfo = psi;

            p.Start();

        }

        private void button2_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "应用程序|*.exe";

            DialogResult dr = openFileDialog1.ShowDialog();

            if (dr == DialogResult.OK)
            {
                textBox1.Text = openFileDialog1.FileName;
            }

        }
复制代码

线程:
一个进程就像是一个公司,默认只有一个老板
老板叫做 主线程 
主线程一旦让它去执行一段需要时间的代码,那么就会出现
程序假死,失去控制

原因是:线程同一时间只能做一件事,而主线程是操作窗体控制的,一旦被占用,那么窗体就没人控制了。

解决办法:
招一个员工帮老板干这个活

开启线程:
线程基本使用:
//创建一个线程对象,告诉它要执行的是哪一个方法
Thread th = new Thread(aaa);

//准备好了,开始执行,不是立即开始,CPU决定什么时候开始
th.Start();
---------------------------------------------------------------
需要跨线程访问对象:
线程需要执行一个方法,而这个方法允许有一个参数,并且这个参数必须是object类型的

程序默认不允许跨线程访问对象,因为监控开着
需要关闭监控
在构造函数的构造方法下面写上:
Control.CheckForIllegalCrossThreadCalls = false;
---------------------------------------------------------------
程序退出立刻关闭所有线程:
线程默认开启为前台线程,程序必须将所有的前台线程执行完毕后才会真正退出程序

解决办法:将线程变为后台线程
//设置后台线程
th.IsBackground = true;
----------------------------------------------------------------

 View Code

TreeView 控件

 TreeView 控件显示Node 对象的分层列表,每个Node 对象均由一个标签和一个可选的位图组成。

利用treeview 显示省区县(递归)

FORM代码

 View Code
复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication2
{
    public class China
    {
        public string AreaCode { get; set; }
        public string AreaName { get; set; }
        public string ParentAreaCode { get; set; }


    }
}
复制代码
复制代码
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication2
{
    public class ChinaData
    {
        SqlConnection conn = null;
        SqlCommand cmd = null;

        public ChinaData()
        {
            conn = new SqlConnection("server=.;database=mydb;user=sa;pwd=123");
            cmd = conn.CreateCommand();
        }

        public List<China> Select(string pcode)
        {
            List<China> clist = new List<China>();

            cmd.CommandText = "select *from ChinaStates where ParentAreaCode = '" + pcode + "'";

            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();

            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    China c = new China();
                    c.AreaCode = dr[0].ToString();
                    c.AreaName = dr[1].ToString();
                    c.ParentAreaCode = dr[2].ToString();

                    clist.Add(c);
                }
            }

            conn.Close();
            return clist;
        }


        public List<China> Select()
        {
            List<China> clist = new List<China>();

            cmd.CommandText = "select *from ChinaStates";

            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();

            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    China c = new China();
                    c.AreaCode = dr[0].ToString();
                    c.AreaName = dr[1].ToString();
                    c.ParentAreaCode = dr[2].ToString();

                    clist.Add(c);
                }
            }

            conn.Close();
            return clist;
        }



    }
}
复制代码

 

winform进程与线程

进程:最基础的打开进程的方法: Process.Start("calc");弊端:必须输入打开进程的名字,如果打开进程的名字错误,程序崩溃 完善的打开进程的方法:  //实例化进程类  Processp=newProcess();  //创建进程开启路径对象 ... 查看详情

winform进程,线程

进程:一个进程,代表一个程序线程:一个程序,有多个线程.为什么要使用多线程操作:一个窗体,在创建的时候,默认会生成一个主线程,这个主线程会操作窗体的移动等操作,在执行需要等待时间的方法时,如果没有多线程操作,窗体是无... 查看详情

winform进程线程

进程主要调用另一程序,线程分配工作。一、进程:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。Process类,用来操作进程。命名空间... 查看详情

winform进程线程

一、进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。Process类,用来操作进程。命名空间:usingSystem.Diagnostics; Process.Start("calc"... 查看详情

winform(进程和线程)

一、进程:需要有用Process类用法一:Process.Start("calc");(不好用)该方法弊端:有许多程序不知道它的运行名字到底是什么,如果写错了,就会出现程序崩溃错误用法二://实例化进程类Processp=newProcess();//创建进程开启路径对象Pr... 查看详情

winform进程,线程

一、进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。Process类,用来操作进程。命名空间:usingSystem.Diagnostics; Process.Start("calc"... 查看详情

为啥 WinForms 中的 TreeView 会意外崩溃?

】为啥WinForms中的TreeView会意外崩溃?【英文标题】:WhywouldaTreeViewcollapseunexpectedlyinWinForms?为什么WinForms中的TreeView会意外崩溃?【发布时间】:2010-11-1218:05:10【问题描述】:除了调用TreeNode上的.Collapse()方法或TreeView的.CollapseAll()... 查看详情

winform进程线程

进程:一般来说,一个程序就是一个进程,不过也有一个程序需要多个进程支持的情况。进程要使用的类是:Process它在命名空间:System.Diagnostics; 1、静态方法Start();2、也可以实例化对象,来调用Start()普通方法,但调用普通... 查看详情

winform进程和线程

一、进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。Process类,用来操作进程。命名空间:usingSystem.Diagnostics; Process.Start("calc"... 查看详情

winform进程和线程

  进程:    //进程用到的类Process,需要进行解析usingSystem.Diagnostics    Process.Start("calc");//Process是非静态方法,括号里面是要开启的进程的名字    (静态方法与非静态方法区别:静态方法不用实例化对象,直接... 查看详情

c#窗体winform进程,线程

一、进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。Process类,用来操作进程。命名空间:usingSystem.Diagnostics; Process.Start("calc"... 查看详情

winform控件treeview只部分节点显示checkbox

WinForm控件TreeView只部分节点显示 CheckBox 用过asp.net的应该知道,要在treeview中实现上述功能可以使用ShowCheckBox属性指定那些节点显示checkbox哪些不显示,可是winform中的treeview只提供一个ShowCheckBoxes属性,要么全部节点显示check... 查看详情

WinForms中的进程间多线程通信(网络浏览器控件)

】WinForms中的进程间多线程通信(网络浏览器控件)【英文标题】:InterprocessmultithreadedcommunicationinWinForms(webbrowsercontrol)【发布时间】:2011-10-0414:28:16【问题描述】:我有2个进程要在它们之间启用多线程通信。这两个进程都是STA... 查看详情

c#winform中treeview怎么进行数据绑定

...定不推荐用在winform中,你可以使用递归的方式建立一个TreeView,举个例子,你可以这么写:privatevoidInitializeTreeView()treeView1.BeginUpdate();treeView1.Nodes.Add("Parent");treeView1.Nodes[0].Nodes.Add("Child1");treeView1.Nodes[0].Nodes.Add("C... 查看详情

在 C# winforms 应用程序中使用文本框过滤 Treeview

】在C#winforms应用程序中使用文本框过滤Treeview【英文标题】:FilteraTreeviewwithaTextboxinaC#winformsapp【发布时间】:2012-01-0519:34:10【问题描述】:我的C#winform中有一个TreeView。我希望能够通过搜索框添加搜索功能。基本上当用户输入字... 查看详情

c#-winform-treeview-树状模型

Treeview-树状模型利用递归添加数据数据放入 treeView1.Nodes.Add()中publicForm3(){InitializeComponent();TreeNodet1=newTreeNode("中国");TreeNodet2=newTreeNode("北京");TreeNodet3=newTreeNode("朝阳区");t2.Nodes.Add(t3);t1.Nod 查看详情

Winforms treeview,递归检查子节点问题

】Winformstreeview,递归检查子节点问题【英文标题】:Winformstreeview,recursivelycheckchildnodesproblem【发布时间】:2011-03-1114:31:49【问题描述】:以下代码直接取自微软http://msdn.microsoft.com/en-us/library/system.windows.forms.treeview.aftercheck%28VS.80%2... 查看详情

winform中,treeview如何只展开一级节点

winform中,TreeView如何只展开一级节点(根节点下面的一级)。不是把所有的节点都展开!应该怎么写呢?谢谢!参考技术A如果几点类型如下根节点|--子节点1||--节点11|--子节点2|--节点21如果需要只展开子节点1,2,使用this.TreeViee1.N... 查看详情