![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
zxt_net
C# WPF Revit C++
展开
-
获取revit窗口的尺寸以及角点坐标值
1、先获取revit句柄IntPtr RevitHandle=Autodesk.Windows.ComponentManager.ApplicationWindow;需要添加AdWindows.dll的引用。2、根据句柄获取窗口尺寸数据[DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool GetWindowRect(IntPtr hWnd, re...原创 2022-04-07 18:09:39 · 419 阅读 · 0 评论 -
WPF 圆球旋转来实现圆环进度条
前台:<!--设置圆的颜色--> <UserControl.Resources> <SolidColorBrush Color="#f89437" x:Key="CirclesColor"/> </UserControl.Resources><StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> &原创 2022-03-30 11:54:09 · 797 阅读 · 0 评论 -
定时器 定时刷新页面上的数据等
#region 定时器 System.Timers.Timer timer = null;//定时器 定时刷新页面上的数据 /* 启动*/ void starttime() { if (timer == null) timer = new System.Timers.Timer(); timer.Enabled = false; time...原创 2022-03-23 09:47:59 · 731 阅读 · 0 评论 -
C#异步调用、异步回调
1、使用委托的BeginInvoke和EndInvoke实现异步。public delegate string ShowName(); static void Main(string[] args) { ShowName showName = new ShowName(() => { Console.WriteLine("开始起名字"); Thread.Sleep(3000); Console.WriteLine("名字起好了"); ret原创 2020-12-22 22:13:57 · 2332 阅读 · 0 评论 -
C# web 服务端如何防止被频繁访问攻击的参考方法之一
时间戳、key、验签加密(时间戳+key)=验签只有客户端和服务器端知道验签的加密方式以及key。客户端首先使用key对时间戳进行加密生成验签,然后将时间戳和验签发给服务端。服务端拿到时间戳之后将其用key进行加密比对验签。如果正确则继续比对时间戳是否与上次访问的时间间隔合法。1、如果黑客修改了时间戳则可能造成验签不通过。因为黑客不知道如何对新的时间戳进行加密以获取新的验签。2、如果黑客不修改时间戳,则会因与上次访问时间间隔不合法而拒绝后面的操作。...原创 2020-12-13 21:30:01 · 619 阅读 · 1 评论 -
C# lock递归
public void test(int i) { lock(this) { if (i > 10) { i--; test(i); } } }上述代码不会发生死锁,因为 同一个线程可以递归调用lock语句。原创 2020-12-12 21:02:46 · 400 阅读 · 1 评论 -
C# GC
1、GC 垃圾回收器2、可以让程序员从复杂的内存问题中解放出来干点别的事情,也减少了程序员因为处理内存所带来的各种bug。减少模块间的耦合。提高效率。3、GC就是看某个对象是否被引用,如果没有被引用则将其收回。4、比较常见的回收算法有Reference Counting,Mark Sweep,Copy Collection。...原创 2020-12-12 11:15:55 · 84 阅读 · 0 评论 -
webService和WebApi的区别
1、webservice基于简单对象访问协议Simple Object Access Protocol(soap),XML传输消息,只能部署在IIS上。2、webApi为简单的HTTP新框架,合适构建移动客户端服务。3、webService用于内部通信服务较好,webApi用于外部服务请求较好。4、Response可以被Web API的MediaTypeFormatter转换成Json、XML 或者任何其他的格式。5、soap它描述了一种在分散或分布式的环境中如何交换信息的轻量级协议。soa原创 2020-12-10 21:55:54 · 12975 阅读 · 0 评论 -
分布式应用程序交互之WebService
1、创建web应用程序然后添加web服务。2、web服务中需要被调用的方法需要加[WebMethod特性]例如:[WebMethod(Description = "输出HelloWorld")]3、发布:配置文件-自定义;连接:File System 文件发布路径(path):指定一个,这个就是后面做网站时需要要到的。4、安装IIS添加网站:自定义网站名称,设置物理路径即path;设置Ip地址和端口号。确定完成。5、网站访问的错误与解决办法:500.19:文件访问权限不够。500..原创 2020-12-10 11:09:09 · 181 阅读 · 0 评论 -
我的泛型
1、泛型是延迟声明类型,定义的时候没有指定类型,调用的时候才指定参数类型。2、相对于使用object类型的参数,不用总装箱和拆箱。3、基类约束:where T:Car 即T必须是Car的派生类。4、接口约束:where T:ICar 即T必须实现ICar接口或者就是ICar接口,可以有多个接口约束。public class List<T> : IList<T>, ICollection<T>, IList, ICollection, IReadO..原创 2020-12-10 09:37:38 · 105 阅读 · 0 评论 -
事件即对委托的封装
大神们不喜勿喷,仅个人理解学习使用。事件是对委托的封装。同样,事件也和委托一样具有多播特性(所谓多播就是可以绑定多个方法,触发时顺序调用绑定的这多个方法),可以绑定多个方法。下面做一个鼠标点击的事件:public delegate void MouseClickDelegate(); public class MouseA { public event MouseClickDelegate MouseClickEvent; public voi原创 2020-12-09 23:09:21 · 247 阅读 · 0 评论 -
c#在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式------例如,openFileDialog时提示
在可以调用 ole 之前,必须将当前线程设置为单线程单元(sta)模式。请确保您的 main 函数带有 stathreadattribute 标记。 只有将调试器附加到该进程才会引发此异常。这种情况下要把 openFileDialog放到新的SAT线程中运行就行。即openFileDialog所在的线程加上这个------thread.SetApartmentState(ApartmentSt...原创 2018-07-26 16:16:18 · 4108 阅读 · 1 评论 -
C# 在图片上写入水印
/// /// 在图片上生成图片水印 /// /// 原服务器图片路径 /// 生成的带图片水印的图片路径 /// 水印图片路径 public void AddWaterPic(string Path, string Path_syp, string Path_sypf, int x = 0, in转载 2017-08-10 14:59:03 · 607 阅读 · 0 评论 -
C# 装箱、拆箱、泛型
1、装箱:值类型转引用类型。开辟一块内存空间进行存放数据。2、拆箱:引用类型转值类型。值类型存放在栈上,引用类型存放在堆上。装箱需要消耗内存,所以引出了泛型。泛型:1. 使用非泛型集合时引发的装箱和拆箱操作 看下面的一段代码:12345678var原创 2017-08-10 11:07:25 · 1497 阅读 · 0 评论 -
C# 支持foreach
一个类型是否支持foreach遍历,必须满足下面条件:方案1:让这个类实现IEnumerable接口方案2:这个类有一个public的GetEnumerator的实例方法,并且返回类型中有public 的bool MoveNext()实例方法和public的Current实例属性。其实任何支持GetEnumerator()方法的类型都可以通过foreach结构进行运算。原创 2017-08-09 16:48:35 · 377 阅读 · 0 评论 -
C# 获取某个目录的父目录
System.IO.DirectoryInfo topDir = System.IO.Directory.GetParent(System.Environment.CurrentDirectory);原创 2017-06-12 17:58:29 · 3853 阅读 · 0 评论 -
C# VS中进行编译发现没有错误但是无法生成的原因
可能是所编译的项目的框架低于其中引用的dll的项目框架。原创 2017-06-12 09:44:20 · 9408 阅读 · 0 评论 -
C# 程序中加载dll文件,根据dll名称寻找dll文件路径并load
1、寻找dll文件的路径public static string FindAssemblyPath(string assemblyName) { if (assemblyName.EndsWith(".dll") == false) { assemblyName = assemblyName +=原创 2017-06-20 15:58:24 · 2999 阅读 · 0 评论 -
C# 文件下载(二)异步
using (WebClient wc = new WebClient()) { ////同步下载 wc.DownloadProgressChanged += Wc_DownloadProgressChanged;原创 2017-06-19 16:17:42 · 483 阅读 · 0 评论 -
如何获取windows DPI设置值(Set Custom Text Size)
首先添加引用:using System.Management; [DllImport("user32.dll")] static extern IntPtr GetDC(IntPtr ptr); [DllImport("user32.dll", EntryPoint = "ReleaseDC")] public static extern In原创 2017-02-06 16:28:03 · 1422 阅读 · 0 评论 -
C#用副线程改主线程(UI线程)的控件属性的方法(包括Winform和WPF)
C#用副线程去试图修改主线程的UI控件会报出异常,解决方案是使用副线程注册事件通知主线程自己去修改UI控件在winform中,方法如下private void button1_Click(object sender, EventArgs e){ Thread myThread = new Thread (new ThreadStart(fun)); myThread.转载 2017-03-18 15:35:43 · 800 阅读 · 0 评论 -
wpf 关于图片加载后变模糊的原因
1、检查控件的大小是否与图片的大小相同。2、修改属性 RenderOptions.BitmapScalingMode的值Unspecified使用默认位图缩放模式,即 Linear。LowQuality使用双线性位图缩放,虽然速度比 HighQuality 快,但输出质量较低。 LowQuality 模式与 Linear 模式相同。HighQuality使用高质量位原创 2017-03-21 09:55:33 · 743 阅读 · 0 评论 -
wpf 设置treeView节点选中后的的文字颜色、节点的背景色以及节点失去焦点后的背景颜色
<TreeView Margin="20,10,0,0" BorderThickness="0" Background="#1b222d" VirtualizingStackPanel.IsVirtualizing="False" scroll:TreeViewScrollToViewBehavior.TreeViewSelectedItem="{Bin原创 2017-03-22 16:13:42 · 12585 阅读 · 2 评论 -
WPF Image鼠标进入后改变图片
以下代码需要放在窗体的resource中。image控件需要设置为此样式原创 2017-03-22 17:39:05 · 3979 阅读 · 1 评论 -
WPF 加载H5页面
1、加载Html5页面创建控件2、加载页面m_webFrame.Source = new Uri("网页地址");3、隐藏网页的菜单 m_webFrame.NavigationUIVisibility = System.Windows.Navigation.NavigationUIVisibility.Hidden;原创 2017-04-06 14:34:12 · 4376 阅读 · 1 评论 -
revit 二次开发 如何修改元素的表面颜色
1、获取填充图案 FilteredElementCollector fillPatternElementFilter = new FilteredElementCollector(doc); fillPatternElementFilter.OfClass(typeof(FillPatternElement)); //获取实体填充原创 2017-05-23 13:57:45 · 5867 阅读 · 15 评论 -
C# JObject 的使用生成json字符串
JObject obj = new JObject(); JObject obj1 = new JObject(); obj["where"] = obj1; obj1["exname"] = "name";//{"exname": "name"} obj["skip"] = 0;原创 2017-06-05 14:41:25 · 21802 阅读 · 0 评论 -
C# 将dll打包进exe dll静态引用
1、在项目中创建文件夹并将需要打包的dll放进文件夹中这里我创建了一个文件夹 res并将需要打包的dll文件“a.dll”添加进此文件夹中。vs中设置dll文件的属性“生成操作”为“嵌入的资源”2、在exe的入口或者窗体的构造函数中添加如下代码//添加程序集解析事件 AppDomain.CurrentDomain.AssemblyResolve += Cu原创 2017-06-02 10:18:56 · 2897 阅读 · 0 评论 -
C# 如何将数据序列化到本地 数组 对象 等等
1、将需要保存的数据生成json添加引用: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Web.Extensions.dll生成json: public string ToJSON(object obj) { J原创 2017-06-07 15:27:37 · 3195 阅读 · 0 评论 -
C# revit二次开发 一条语句找到所有的某种实例(一)
coll.OfCategory(BuiltInCategory.OST_Walls).Where(a=>(doc.GetElement(a.GetTypeId())as ElementType).LookupParameter("族名称").AsString()=="基本墙")原创 2017-06-07 17:22:42 · 1834 阅读 · 0 评论 -
C# revit二次开发 一条语句找到所有的某种实例(二)
1、解放BuiltInCategory FilteredElementCollector fc0 = new FilteredElementCollector(doc, doc.ActiveView.Id).WhereElementIsElementType(); FilteredElementCollector fc = new FilteredElement原创 2017-06-07 17:58:32 · 866 阅读 · 0 评论 -
使用矩阵方式进行文件夹的选择即类似OpenFileDialog
1、引用dllMicrosoft.WindowsAPICodePack.dll Microsoft.WindowsAPICodePack.Shell.dll2、代码var commonOpenFileDialog = new CommonOpenFileDialog(); commonOpenFileDialog.IsFolderPicker = tr原创 2017-06-19 14:56:34 · 1711 阅读 · 0 评论 -
C# 文件上传服务器
private bool HttpUploadFile(string url, string path) { bool result = false; try { // 设置参数 HttpWebRequest request = WebReques原创 2017-06-19 16:02:02 · 521 阅读 · 0 评论 -
C# 文件下载(一)同步
using (WebClient wc = new WebClient()) { ////同步下载 wc.DownloadFile(new Uri(picUrl), savePath); }savePath:下载的文件需原创 2017-06-19 16:13:14 · 464 阅读 · 0 评论 -
如何生存二维码图片保存到本地
二维码原创 2017-02-06 10:37:23 · 1842 阅读 · 0 评论