`
cfeers
  • 浏览: 138580 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

工作笔记(二)

 
阅读更多

1.TreeView 中如何根据 Node名得到index

 

Tv1.Name="节点1";

Tv1.Nodes[节点1].Checked = true;// 在遍历的时候就不会引发index下标越界的错误了,特别是多次遍历集合的时候

,这样就可以避免越界了,直接根据赋值的Name名称来给Checked赋值;

2.移除字符串中的相同字符

 

string str = "1,22,333,4,5,1,22,333,6,7,";//要拆分的字符串   
ArrayList al = new ArrayList();   
string[] arr = str.Split(',');//拆分后的字符数组   
  
for (int i = 0; i < arr.Length; i++)   
{   
    if (al.Contains(arr[i]) == false)//判断 要拆分的字符串 中是否已经存在于这个ArrayList中   
    {   
        al.Add(arr[i]);//不存在则添加进ArrayList   
    }   
    else  
    {    break;// 删除一个重复字符
        //al.Remove(arr[i]);//存在则从ArrayList中删除2个   
    }   
}   
Response.Write(String.Join(",",(string[])al.ToArray(typeof(string))));//把ArrayList里的数组值组合成一个字符串   

 

3. 如何在TreeView里面 勾选Checked,且放入ArrayList,并且根据Combobox加载树中的所选分区列表;

 

根据tv里的AfterCheck事件得到每次勾选的Checked的记录值,

if(e.Node.Checked)

{

   if(!arrList.Contains(e.Node.Name))

      {

          arrList.Add(e.Node.Name);

       }

}

 else

  {

      if(arrList.Contains(e.Node.Name)) 

        {

            arrList.Remove(e.Node.Name);

         }

   }

 

这样,arrList里面存放的就是当前勾选的值了。也就是说,你选择就存入ArrayList,否则就不存。

以下代码是根据通道列表遍历所选分区:

private void RepeatForChannels()

{

  for(int i= 0 ; i< 通道列表; i++)

   {

     for(int j= 0; j < treeView.Nodes.Count; j++)

     {

        for(int jj=0 ; jj < arrayList.Count; jj++)

         {

           if(treeView.Nodes[j].Name == arrayList[jj].Tostring())

             {

                 treeView.Nodes[j].Checked = true;

              }

         }

      }

   }

}

把RepeatForChannels放入Form_Load和 Combobox_SelectIndexChanged事件中,每次就可以把所选的分区列表根据通道来显示出来了。

 

 4.C#多线程强制退出程序
最近在学习多线程程序的开发,但是启动了多个线程的程序在关闭的时候却出现了问题,如果程序退出的时候不关闭线程,那么线程就会一直的存在,但是大多启动的线程都是局部变量,不能一一的关闭,如果调用Thread.CurrentThread.Abort()方法关闭主线程的话,就会出现ThreadAbortException 异常,因此这样不行。
后来找到了这个办法:
Thread.IsBackground 设置线程为后台线程。
msdn 对前台线程和后台线程的解释:托管线程或者是后台线程,或者是前台线程。后台线程不会使托管执行环境处于活动状态,除此之外,后台线程与前台线程是一样的。一旦所有前台线程在托管进程(其中 .exe 文件是托管程序集)中被停止,系统将停止所有后台线程并关闭。通过设置 Thread.IsBackground 属性,可以将一个线程指定为后台线程或前台线程。例如,通过将 Thread.IsBackground 设置为 true,就可以将线程指定为后台线程。同样,通过将 IsBackground 设置为 false,就可以将线程指定为前台线程。从非托管代码进入托管执行环境的所有线程都被标记为后台线程。通过创建并启动新的 Thread 对象而生成的所有线程都是前台线程。如果要创建希望用来侦听某些活动(如套接字连接)的前台线程,则应将 Thread.IsBackground 设置为 true,以便进程可以终止。
所以解决办法就是在主线程初始化的时候,设置:
Thread.CurrentThread.IsBackground = true;
这样,主线程就是后台线程,在关闭主程序的时候就会关闭主线程,从而关闭所有线程。
但是这样的话,就会强制关闭所有正在执行的线程,所以在关闭的时候要对线程工作的结果保存。

——————————————


C#程序的几种退出

1.Application.Exit(); //好像只在主线程可以起作用,而且当有线程,或是阻塞方法的情况下,很容易失灵
2.System.Environment.Exit(0); //无论在主线程和其它线程,只要执行了这句,都可以把程序结束干净
3.this.Close();
4.Application.ExitThread();

 

5. Treeview中的图标不能正常显示

XP系统中,使用Application.EnableVisualStyles后,Treeview中的图标不能正常显示!

 

this.TreeView.BeginUpdate();

//处理操作

//this.TreeView.EndUpdate();

 

这样TreeView出来之后节点就不会显示不全了。

 

分享到:
评论

相关推荐

    笔记笔记笔记笔记笔记笔记

    笔记中应包括线性结构(如数组、链表)、树形结构(如二叉树、堆)、图结构以及各种排序和查找算法(如冒泡排序、快速排序、二分查找等)。理解和实践这些概念能提高代码效率,解决复杂问题。 操作系统笔记通常涵盖...

    初级笔记本维修学习笔记

    以下是一份初级笔记本维修学习笔记,旨在帮助新手逐步掌握基本的笔记本电脑维护与故障排查技巧。 一、安全操作与工具准备 在进行任何维修工作前,确保笔记本断电并拔掉电源适配器,以防触电。同时,使用防静电手环...

    PHP工作笔记.zip

    插入排序 - 希尔排序][二十例 交换排序 - 快速排序][二一例 算法求解应用][二二例 跟踪调试代码 XDebug][二三例 接口调试工具 SocketLog][二四例 递归 尾递归 迭代 回调][二五例 数据库操作(MySQL扩展)][二六例 ...

    思源笔记插件——汇总散落在整个工作空间的任务 Siyuan Note Plugin

    **思源笔记插件——汇总散落在整个工作空间的任务 Siyuan Note Plugin** 思源笔记(Siyuan Note)是一款开源的个人知识管理系统,它以其强大的笔记组织功能和灵活的自定义能力受到许多用户的喜爱。在日常工作中,...

    尚硅谷SpringCloud第二季笔记

    【尚硅谷SpringCloud第二季笔记】是一份详细记录了SpringCloud组件使用的学习笔记,涵盖了SpringCloud在云原生环境下的核心概念和实践应用。SpringCloud是基于Spring Boot实现的微服务框架,它提供了构建分布式系统...

    有道云笔记如何调整窗口大小?.docx

    调整有道云笔记的窗口大小可以提高用户的工作效率和阅读体验。用户可以通过调整笔记本栏目、笔记列表栏目、笔记编辑框、隐藏工具栏和笔记本栏、隐藏笔记本列表栏、放大和缩小笔记本的内容等方法来实现窗口大小的调整...

    工作流引擎jbpm学习笔记

    工作流引擎jbpm学习笔记 jbpm是一个专业的工作流引擎,用于定义、管理和执行业务流程。它可以帮助我们简化工作流程的开发和维护,提高工作效率和可扩展性。 一、什么是公文流转? 公文流转是指公文在定义流转中的...

    Python学习笔记第二版

    根据提供的文档信息,我们可以从中提炼出一系列与Python学习相关的知识点,尤其聚焦于“Python学习笔记第二版”的内容。下面将详细展开这些知识点: ### Python学习笔记第二版 #### 前言 - **作者背景**:作者从...

    韦东山二期驱动笔记

    【韦东山二期驱动笔记】是一份针对Linux驱动程序开发的参考资料,由知名Linux技术专家韦东山编撰。这份笔记深入浅出地讲解了Linux内核驱动开发的基础与实践,旨在帮助读者理解和掌握Linux系统下的设备驱动编写技巧。...

    笔记本维修笔记(三十讲全)

    这些章节可能详细介绍了接口的工作原理、常见故障及修理方法,对于处理接口接触不良或无法识别设备的问题尤其有帮助。 “第二十七讲 笔记本音频接口电路”专注于声音输出输入的硬件部分,包括声卡、扬声器和耳机...

    交换机笔记交换机笔记交换机笔记交换机笔记

    例如,交换机主要工作在OSI模型的第二层(数据链路层),处理MAC地址和帧的转发;而路由器则工作在第三层(网络层),处理IP地址和路由选择。 除了理论知识,动手实践是掌握交换机配置的关键。你可以通过模拟器(如...

    Golang工作笔记.zip

    [第一例 留言板][第二例 gRPC使用例子][第三例 基于go-micro做服务注册和服务发现][第四例 聊天室][第五例 工具库][第六例 原生sql操作][第七例 sqlx操作][第八例 Redis数据库(gomodule/redigo)][第九例 Redis消息...

    jsp二期学习笔记(北大青鸟二期学习)

    ### JSP 二期学习笔记(北大青鸟二期学习) #### JSP 二期学习概述 本学习笔记主要记录了在北大青鸟进行的JSP二期培训过程中所学到的关键知识点和技术细节。JSP(JavaServer Pages)是一种基于Java的技术,用于...

    韦东山老师视频二期代码和笔记

    【韦东山老师视频二期代码和笔记】是针对IT专业人士,特别是嵌入式系统开发者的一份宝贵学习资源。韦东山老师是中国知名的嵌入式系统讲师,他的教学风格深入浅出,深受学员喜爱。这份资料集包含了他在二期课程中的源...

    MLX90640开发笔记(完整十章20191012).pdf

    MLX90640开发笔记(二)API移植-I2C和关键接口函数 MLX90640开发笔记(三)工作流程和操作MLX90640的一般步骤 MLX90640开发笔记(四)损坏和不良像素的处理 MLX90640开发笔记(五)阵列插值-由32*24像素到512*384...

    火狐浏览器不支持有道云笔记网页版

    火狐浏览器的插件可能会干扰有道云笔记网页版的正常工作。例如,某些插件可能会阻止 JavaScript 文件的加载或修改网页的样式表。 五、解决方案 1. 使用其他浏览器:用户可以尝试使用其他浏览器,如 Google Chrome ...

    java计算机二级考试笔记.pdf

    Java 计算机二级考试笔记 本文档是 Java 计算机二级考试笔记,涵盖了考试的所有内容,包括软件工程基础和 Java 知识。下面是从文档中提取的相关知识点: 一、Applet * Applet 的生命周期 * 向 Applet 传递参数...

    python核心编程第二版笔记.rar

    10. **高级话题**:如装饰器、生成器、上下文管理器等是Python的高级特性,笔记会解释它们的工作原理和应用场景,帮助有经验的开发者进一步提升技能。 这份详尽的笔记不仅是初学者的宝典,也是有一定经验的开发者...

    计算机二级MSoffice操作题笔记(Word和Execl)

    ### 计算机二级MS Office操作题笔记精解 #### Word 操作技巧详解 **一、高级查找与替换** 在 Word 中,高级查找与替换功能非常实用,可以帮助用户精确地定位文档中的特定内容并进行修改。要快速启动该功能,可以...

Global site tag (gtag.js) - Google Analytics