草庐IT

c# - Excel Interop - 在一个范围内绘制所有边框

我从Microsoft的文档中看到,我可以使用“xlBordersIndex”属性访问单元格的特定边框边缘,例如设置单元格左边缘的边框样式:range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft].LineStyle=Excel.XlLineStyle.xlContinuous;但是如果我只想绘制所有边框怎么办?我试过了range.BorderAround2();但这只是在范围本身周围画了一个方框,我明白这一点。于是我尝试了range.Cells.BorderAround2();认为它会遍历范围内的每

c# - Xamarin 和 .NET Standard 2 库问题

我创建了一个跨平台库,它有3个特定于平台的实现:安卓系统苹果手机.NET标准2.0我以与跨平台库项目类似的方式将库与Nuget打包在一起。现在,当我创建一个新的XamarinForms项目并选择.NETStandard作为共享代码的方式时,我引用我的nuget并尝试在android模拟器中运行它,我得到:/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(2,2):Error:Exceptionwhileloadingassemblies:Sy

c# - 奇怪的 handle 泄漏

我的应用程序(基本应用程序是与C++/CLI互操作的MFC,但它还包含大量C#、Windows窗体、WPF)有句柄泄漏。应用程序启动后不久,我可以看到任务管理器中的句柄数持续增长(以每秒10个新句柄的速度)。所以我用了handles.exe看看它们是什么类型的句柄。我发现泄漏的句柄是进程句柄。它们是我的应用程序进程的进程句柄。所以我想知道哪些操作通常会为其运行的进程创建句柄。有什么想法吗?你见过这样的事吗?考虑到我不能使用调试DLL并且我只能使用可以xcopy部署的工具,我还能做些什么来追踪泄漏。更新:我能够向它抛出windbg和!handle,!htrace并发现进程句柄都是使用以下

c# - 是否可以获取/设置控制台字体大小?

我看过关于更改控制台真实字体和控制台颜色(rgb)的帖子,但没有关于设置或获取控制台字体大小的帖子。我想改变字体大小的原因是因为控制台打印了一个网格,网格有很多列,所以,它更适合较小的字体。我想知道是否可以在运行时更改它而不是允许默认或配置的字体优先/覆盖继承。 最佳答案 也许this文章可以帮到你ConsoleHelper.csusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Runtime.Inter

c# - 释放临时 COM 对象

考虑以下使用COM对象的C#代码。MyComObjecto=newMyComObject;try{varbaz=o.Foo.Bar.Baz;try{//dosomethingwithbaz}finally{Marshal.ReleaseComObject(baz);}}finally{Marshal.ReleaseComObject(o);}这将释放COM对象o和baz,但不是o.Foo返回的临时对象和o.Foo.Bar.当这些对象拥有大量非托管内存或其他资源时,这可能会导致问题。一个明显但丑陋的解决方案是,用try-finally使代码更加困惑和Marshal.ReleaseComO

c# - 从 .net DLL 导出 native C 函数?

这个问题在这里已经有了答案:IsispossibletoexportfunctionsfromaC#DLLlikeinVSC++?(4个答案)关闭6年前。我有一个用C#编写的.net程序集,我希望从该程序集中导出nativeC函数。我有一个应用程序,它将对在“插件”文件夹中找到的任何DLL执行“LoadLibrary()”。加载DLL后,应用程序执行“GetProcAddress”以查找名为“Register”的函数。应用程序希望此函数遵循C调用约定。如何从我的.net程序集中导出名为“Register”的函数,以便我可以成功连接到此应用程序的插件系统?谢谢,安德鲁

c# - 如何处理 null 或可选的 DLL 结构参数

如何处理使用pinvoke从C#调用的dll方法中的可选struct参数?例如,lpSecurityAttributesparameterhere不存在时应传递null。传递struct的正确方法似乎是使用ref,但它不能有可选参数,或者通常采用null.有什么方法可以实现? 最佳答案 你有几个选择1)使用class而不是struct我觉得这个方法最简单。只需声明struct作为class:[StructLayout(LayoutKind.Sequential)]publicclassCStruct{//member-list}然后

c# - 如何将消息发布到运行消息泵的 STA 线程?

所以,关注this,我决定在专用STA线程上显式实例化一个COM对象。实验表明COM对象需要一个消息泵,这是我通过调用Application.Run()创建的:privateMyComObj_myComObj;//CalledfromMain():ThreadmyStaThread=newThread(()=>{_myComObj=newMyComObj();_myComObj.SomethingHappenedEvent+=OnSomthingHappened;Application.Run();});myStaThread.SetApartmentState(ApartmentSt

c# - 如何获得使用范围内的整个列?

我正在尝试获取一列,但将其限制在使用范围内...publicstaticExcel.ApplicationApp=newExcel.Application();publicstaticExcel.WorkbookWB;WB=App.Workbooks.Open("xxx.xls",ReadOnly:true);varsheet=(WB.Sheets[1]asExcel.Worksheet);//returns65536rows,Iwantonly82(usedrange)sheet.get_Range("F:F");sheet.UsedRange.get_Range("F:F").Ro

c# - 在构建服务器上注册 COM 引用的 DLL

我们正在开发引用一些COM库(例如AutoIT)的C#应用程序。我在第3方“Libs”文件夹中包含了源代码管理下的所有引用组件。问题是COMdll在.csproj文件中没有HintPath属性,我认为这些必须使用regsvr32(或使用某种脚本)手动注册。我目前正在研究创建一个将在每次构建之前运行的MSBuild脚本,但是我不知道我是应该手动调用regsvr32.exe还是使用一些预定义的MSBuild任务?目前,这是我尝试进行的测试:这会产生错误,指出我放置在给定文件夹中的DLL不是有效的DLL。这个问题有什么好的解决方案?编辑:引用COMdll的项目在.csproj文件中有类似的内