winfrom C#树勾选等
AfterCheck
/// <summary>
/// 树勾选
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tvCourse_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Action ==TreeViewAction.ByMouse)
{
if (e.Node.Checked)
{
SetChildNode(e.Node, true);
if (null!= e.Node.Parent)
{
SetParentNode(e.Node, true);
}
//获取选中节点值
lstChapterIds.Add(e.Node.Name);
this.btnDelRes.Enabled = true;
}
else
{
//取消节点选中状态之后,取消所有父节点的选中状态
SetChildNode(e.Node, false);
//如果节点存在父节点,取消父节点的选中状态
if (e.Node.Parent != null)
{
SetParentNode(e.Node, false);
}
//获取选中节点值
if (lstChapterIds.Contains(e.Node.Name))
{
lstChapterIds.Remove(e.Node.Name);
if (!lstChapterIds.Any())
{
this.btnDelRes.Enabled = false;
}
}
} }
}
AfterCheck
设置节点
/// <summary>
/// 查找根节点
/// </summary>
/// <param name="node">节点node</param>
/// <returns></returns>
private TreeNode FindParentNode(TreeNode node)
{
if (node.Parent == null)
{
return node;
}
else
{
return FindParentNode(node);
}
} /// <summary>
/// 设置父节点
/// </summary>
/// <param name="node">当前节点</param>
/// <param name="state">状态</param>
private void SetParentNode(TreeNode node, bool state)
{
TreeNode pNode = node.Parent;
if (null != pNode)
{
pNode.Checked = state;
bool flag = false;
foreach (TreeNode currNode in pNode.Nodes)
{
if (!currNode.Checked) //控制父节点全选,父节点选中去掉!
{
flag = false;
pNode.Checked = flag;
break;
}
//SetParentNode(item, state);
}
if (pNode.Checked )
{
//获取选中节点值
lstChapterIds.Add(pNode.Name);
}
else
{
if (lstChapterIds.Contains(pNode.Name))
{
lstChapterIds.Remove(pNode.Name);
}
}
SetParentNode(pNode, flag); }
}
/// <summary>
/// 设置子节点
/// </summary>
/// <param name="node">当前节点</param>
/// <param name="state">状态</param>
private void SetChildNode(TreeNode node, bool state)
{
TreeNodeCollection tncNodes = node.Nodes;
if (tncNodes.Count>)
{
foreach (TreeNode currNode in tncNodes)
{
currNode.Checked = state;
if (currNode.Checked)
{
//获取选中节点值
lstChapterIds.Add(currNode.Name);
}
else
{
if (lstChapterIds.Contains(currNode.Name))
{
lstChapterIds.Remove(currNode.Name);
}
} SetChildNode(currNode, state);
}
}
}
程序只开一个:program.cs
bool createdNew = false;
System.Threading.Mutex instance = new System.Threading.Mutex(true, Application.ProductName, out createdNew);
if (createdNew)
{
//...........code
instance.ReleaseMutex();
}
else
{
MessageBox.Show("该程序已经在运行!", Application.ProductName,MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
Application.Exit();
}
委托 不同线程间访问控件
private delegate void UploadPro(int mProgre); private event UploadPro UploadProEvent; UploadProEvent +=ResourceManage_UploadProEvent; void ResourceManage_UploadProEvent(int mProgree)
{ //...... } var thread = new Thread(new ThreadStart(method));
thread.Start();
this.Invoke(UploadProEvent,currentPro);
解压缩 文件
ZipInputStream inputStream = new ZipInputStream(File.OpenRead(strFilePath));
ZipEntry theEntry;
//读取文件名
List<string> fileNameList = new List<string>();
while ((theEntry = inputStream.GetNextEntry()) != null)
{
totalSize += theEntry.UncompressedSize;
string templateName = theEntry.FileName;
string fileName = Path.GetFileName(templateName);
if (!string.IsNullOrEmpty(fileName))
fileNameList.Add(fileName);
}
inputStream.Close(); #region 解压文件 inputStream = new ZipInputStream(File.OpenRead(filePath));
//long totalSize = inputStream.Length;
long currentSize = ;
int currentPro = ;
ZipEntry theEntry;
ZipFile zf = ZipFile.Read(filePath);
//以文件流来解压所有文件,同时计算进度
while ((theEntry = inputStream.GetNextEntry()) != null)
{
//totalSize += theEntry.UncompressedSize;
//long totalSize = theEntry.UncompressedSize;
//destPath += "/";
//string templateName = theEntry.FileName;
//string fileName = Path.GetFileName(templateName);
////string dir = Path.GetDirectoryName(templateName);
//string dir = templateName;
//if (!dir.Contains("\\") && string.IsNullOrEmpty(fileName))
//{
// continue;
//}
////截取目录文件夹
//if (dir.Contains("\\"))
// dir = dir.Substring(dir.IndexOf("\\") + 1, dir.Length - dir.IndexOf("\\") - 1); //if (templateName.Length == (dir + "/" + fileName).Length) dir = ""; ////theEntry.IsDirectory 是否目录 //string path = Path.GetDirectoryName(destPath) + "/" + dir + "/";
////Path.GetDirectoryName(baseDir) + "/";//
//if (!Directory.Exists(path))
// Directory.CreateDirectory(path); string strFilePath = string.Empty;
string templateName = theEntry.FileName;
if (!templateName.Contains("\\"))
{
//文件
strFilePath = destPath + "\\" + theEntry.FileName;
}
else
{
//文件夹里文件
strFilePath = destPath + theEntry.FileName;
}
if (!Directory.Exists(Path.GetDirectoryName(strFilePath)))
{
Directory.CreateDirectory(Path.GetDirectoryName(strFilePath));
}
string fileName = Path.GetFileName(templateName);
if (fileName != String.Empty)
{
FileStream streamWriter = File.OpenWrite(strFilePath); //解压文件到指定的目录
int size = ;
byte[] data = new byte[];
try
{
while (true)
{
size = inputStream.Read(data, , data.Length);
if (size > )
{
streamWriter.Write(data, , size);
currentSize += size;
}
else
{
break;
}
currentPro = Convert.ToInt32( * currentSize / totalSize); this.Invoke(UploadProEvent,currentPro); }
}
catch (Exception ex)
{
LogHelper.Error(this.GetType(), ex);
this.Invoke(UploadProEvent, -); //-1 导入失败
}
finally
{
streamWriter.Close();
}
} }
inputStream.Close(); #endregion
检查指导文件盘符,获取空间大盘符
/// <summary>
/// 检查指导盘符剩余空间
/// </summary>
/// <param name="str_HardDiskName"></param>
/// <returns></returns>
public static long GetHardDiskFreeSpace(string str_HardDiskName)
{
if (string.IsNullOrEmpty(str_HardDiskName)) return ; long freeSpace = new long();
System.IO.DriveInfo[] drives = System.IO.DriveInfo.GetDrives();
foreach (System.IO.DriveInfo drive in drives)
{
if (drive.Name == str_HardDiskName)
{
freeSpace = drive.TotalFreeSpace;
}
}
return freeSpace;
} /// <summary>
/// 找出当前客户端剩余空间最大盘符
/// </summary>
/// <returns></returns>
public static Dictionary<string, long> GetSystemDirtory()
{
Dictionary<string, long> freeSpace = new Dictionary<string, long>();
DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo drive in drives)
{
if (drive.DriveType == DriveType.Fixed)
freeSpace.Add(drive.Name, drive.TotalFreeSpace);
} string hardDiskName = freeSpace.ToArray().Max(x => x.Key);
long hardDiskSize = freeSpace.ToArray().Max(x => x.Value); freeSpace.Clear();
freeSpace.Add(hardDiskName, hardDiskSize); return freeSpace;
}
获取MAC地址
/// <summary>
/// 获取网卡MAC地址
/// </summary>
/// <returns></returns>
public static string GetNetCardMAC()
{
try
{
string stringMAC = "";
ManagementClass MC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection MOC = MC.GetInstances();
foreach (ManagementObject MO in MOC)
{
if ((bool)MO["IPEnabled"] == true)
{
stringMAC += MO["MACAddress"].ToString(); }
}
return stringMAC;
}
catch
{
return "";
}
}
获取远程文件信息
/// <summary>
/// 获取远程文件信息
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static RemoteFileInfo GetFileInfo(string url)
{
RemoteFileInfo result = new RemoteFileInfo(); try
{
GC.Collect();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
result.MimeType = response.ContentType;
result.LastModified = response.LastModified;
result.FileSize = response.ContentLength;
result.AcceptRanges = String.Compare(response.Headers["Accept-Ranges"], "bytes", true) == ; //关闭连接
response.Close();
request.KeepAlive = false;
}
catch (Exception ex)
{
throw;
} return result;
}
错误日志
#region 日志方法
public void LogTest(string str)
{
string path = System.IO.Directory.GetCurrentDirectory() + "\\log\\";
if (!Directory.Exists(path))
{
DirectoryInfo directorylnfo = new DirectoryInfo(path);
directorylnfo.Create();
}
string dt = "\r\n时间:" + DateTime.Now.ToString("yyyymmddhhmmss") + "\r\n内容:" + str;
int len = dt.Length;
byte[] inputByts = new byte[len];
inputByts = Encoding.GetEncoding("utf-8").GetBytes(dt);
System.IO.FileStream fs = new System.IO.FileStream(path + "log.txt", System.IO.FileMode.OpenOrCreate);
fs.Seek(, System.IO.SeekOrigin.End);
fs.Write(inputByts, , inputByts.Length);
fs.Close();//关闭流
}
#endregion
/// <summary>
/// 错误日志
/// </summary>
/// <param name="errorMsg"></param>
public static void WriteLog(Exception ex)
{
string logPath = GetResDir() + "/log";
string message = string.Format("\r\n\r\n异常时间:{0} \r\n错误源:{1} \r\n异常信息:{2}",
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss,fff"), ex.Source, ex.Message);
File.AppendAllText(logPath + DateTime.Now.ToString("yyyy.MM.dd") + ".log", message, Encoding.UTF8);
}
启动停止服务
/// <summary>
/// 启动服务sc.DisplayName
/// </summary>
/// <param name="serverName"></param>
public static void StartService(string serverName)
{
if (string.IsNullOrEmpty(serverName)) return;
ServiceController sc = new ServiceController(serverName);
if (sc.DisplayName != null)
{
if (sc.Status == ServiceControllerStatus.Stopped) sc.Start();
}
} /// <summary>
/// 停止服务
/// </summary>
/// <param name="serverName"></param>
public static void StopService(string serverName)
{
if (string.IsNullOrEmpty(serverName)) return;
ServiceController sc = new ServiceController(serverName);
if (sc.DisplayName != null) {
if (sc.Status == ServiceControllerStatus.Running) sc.Stop();
}
}
插入修改表数据
public string InsertORupdateData<T>(List<T> _list, string dtName,string columnName)
{
StringBuilder sbInsert = new StringBuilder(); ArrayList list = new ArrayList();
try
{
string sqlstr = "";
if (_list != null && _list.Count > )
{ System.Reflection.PropertyInfo[] p = _list[].GetType().GetProperties();
int length = ;
string values = ""; for (int i = ; i < _list.Count; i++)
{
string sbUpdateSql = "";
int count = ;
string upwh = "";
length = ;
//通过反射获取list中的字段
foreach (System.Reflection.PropertyInfo pi in p)
{ string cName = pi.Name;
string cValue = (pi.GetValue(_list[i], null) == null
? ""
: (pi.GetValue(_list[i], null)).ToString().Replace("'", "")); //替换 '语法错误的 if (cName.ToLower() == columnName.ToLower())
{
string sql = "select count(0) from " + dtName + " where " + columnName + "='"+cValue+"'";
upwh = " where " + columnName + "='" + cValue + "'";
count = ExcelHelper.GetScalar(sql);
} if (length == )
{
sqlstr = "INSERT INTO " + dtName + " (";
values = "(";
sbUpdateSql+="update " + dtName + " set ";
}
length += ;
if (length < p.Length)
{
sbUpdateSql += cName + "= '" + cValue +"',";
sqlstr += cName + ",";
values += "'" + cValue + "',";
}
else
{
sbUpdateSql += cName + "= '" + cValue + "'";
sqlstr += cName + ") Values";
values += "'" + cValue + "'); "; if (count > )
{
sqlstr = sbUpdateSql + upwh;
values = "";
}
}
}
sqlstr += values;
list.Add(sqlstr);
}
}
//for (int i = 0; i < list.Count; i++)
//{
// ArrayList arrList = new ArrayList();
// arrList.Add(list[i]);
// var result = AccessDbHelper.ExecuteSqlTran(arrList);
//}
//string str = string.Join("", list.ToArray());
var result = AccessDbHelper.ExecuteSqlTran(list);
return "success";
}
catch (Exception err)
{
LogTest(err.ToString());
return err.ToString();
} }
winfrom C#树勾选等的更多相关文章
- winfrom 树勾选
树勾选 /// <summary> /// 树勾选 /// </summary> /// <param name="sender"></p ...
- Ext.js中树勾选的四种操作
最近在做控件优化的时候产品提了一个需求,对树的勾选要满足四种勾选方案: 1.点击一次根节点,当根节点和子节点均未选中的情况下,根节点和子节点全都选中. 2.第二次点击根节点,当根节点和部分或全部子节点 ...
- Ext树控件第一次勾选父节点子节点没选中
项目中同事提出了这样一个bug 问题: 第一次勾选父节点子节点竟然没选中,逆天了啊 初步分析: 可能是之前代码的逻辑错误造成的,随进入调试阶段... 调试中发现该参数为空(原来写代码的也太没素质了), ...
- Extjs改变树节点的勾选状态
Extjs改变树节点的勾选状态 今天系统中有处地方需要一个功能点击一个按钮后将树节点前的复选框去掉,变成没有选择的状态.网上搜索了半天,然后自己查查API,终于找到解决办法了,下面把方法贴出来. 在E ...
- ztree学习---将默认勾选的展开
这里只给出前台页面上的代码,数据可以从后台获取,注意,在封装数据的时候,注意:Id(节点的id,可以是数字也可以是字符串) , pid(父亲节点的id) , name(节点名称)不能少 . html页 ...
- 解决jquery操作checkbox全选全不选无法勾选问题
最近在学习中使用jquery操作checkbox,使用下面方法进行全选.反选:$("input[name='checkbox']").attr("checked" ...
- 使用递归方法遍历TreeView的节点如配置则勾选
自己在网上找了一段时间都没有找到取自数据库的值与TreeView中的节点值进行对比如匹配则勾选中CheckBox的资料,后面自己写了一个递归方法实现,现在记录起来以备需要时使用.在没写这递归方法前如果 ...
- Unity关于脚本前面的勾选框
今天做项目时需要在某个事件条件下禁用某个脚本,但是突然发现这个脚本前面没有勾选框,,,就像这样 网上搜了下,原来是需要在脚本中加上void Start()方法,即使这个方法里什么都没有 void St ...
- zTree默认勾选指定ID并执行事件
try { var arrs = $('#subjectClassID').val().split(","); var treeObj = $.fn.zTree.getZTreeO ...
随机推荐
- linux通配符与基础正则
1.特殊符号: ' ' 单引号 单引号的内容 写什么就是什么,不会被当成特殊字符. 单引号实例: [root@oldboyedu-sh01 ~] ...
- UWP &WP8.1 依赖属性和用户控件 依赖属性简单使用 uwp添加UserControl
上面说 附加属性.这章节说依赖属性. 所谓依赖属性.白话讲就是添加一个公开的属性. 同样,依赖属性的用法和附加属性的用法差不多. 依赖属性是具有一个get,set的属性,以及反调函数. 首先是声明依赖 ...
- Django之表单form
在登录系统以及需要上传填入的信息时候,用的最多就是表单系统,例如像下面的这种格式 <form action="/form1/" method="post" ...
- P1959 遗址_NOI导刊2009普及(6)
题意:平面上n个点(坐标$0\le x,y\le 5000,n \le 3000$) 求以其中四个点为顶点的正方形的最大面积 $O(n^2)$枚举两个点作为当前正方形的对角线 那么如何求出另外两个点呢 ...
- P1900 自我数
题意: 对于每一个正整数n,我们定义d(n)为n加上它每一位数字的和. 例如,d(75)=75+7+5=87.给定任意正整数n作为一个起点,都能构造出一个无限递增的序列:n, d(n), d(d(n) ...
- 线段树 SP1043 GSS1 - Can you answer these queries I
SP1043 GSS1 - Can you answer these queries I 题目描述 给出了序列A[1],A[2],-,A[N]. (a[i]≤15007,1≤N≤50000).查询定义 ...
- POJ1847 Tram SPFA算法变形
原题地址:http://poj.org/problem?id=1847 Tram:有轨电车 这题就是构造一个有向无权图,然后每一个点都会有一个开关,这个开关指向他的其中一个出度.当途经这个点的时候,如 ...
- Express全系列教程之(十):jade模板引擎
一.前言 随着前端业务的不断发展,页面交互逻辑的不断提高,让数据和界面实现分离渐渐被提了出来.JavaScript的MVC思想也流行了起来,在这种背景下,基于node.js的模板引擎也随之出现. 什么 ...
- servlet验证账号密码
截图部分: 下载链接:https://gitee.com/lgcj1218/j2eehomework
- POJ1113 Wall
题目来源:http://poj.org/problem?id=1113题目大意: 如图所示,给定N个顶点构成的一个多边形和一个距离值L.建立一个围墙,把这个多边形完全包含在内,且围墙距离多边形任一点的 ...