天道酬勤,学无止境

.net-3.5

删除网格视图选项(Remove gridview options)

问题 如何从GridView菜单中删除“按框显示分组”和“删除此列”? 当我参加活动时,没有 ShowGridMenu 活动,所以这对我不起作用...... 回答1 为此,请改用 GridView.PopupMenuShowing 事件。 private void gridView1_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e) { if(e.MenuType == GridMenuType.Column) RemoveItem(e.Menu, GridLocalizer.Active.GetLocalizedString(GridStringId.MenuColumnRemoveColumn)); else if(e.MenuType == GridMenuType.Group) RemoveItem(e.Menu, GridLocalizer.Active.GetLocalizedString(GridStringId.MenuGroupPanelShow)); } private void RemoveItem(GridViewMenu menu, string caption) { for(int i = 0; i < menu

2022-01-16 08:47:01    分类:技术分享    winforms   .net-3.5   devexpress

如何将 NameValueCollection 转换为 Hashtable(How to convert NameValueCollection to Hashtable)

问题 我有一个NameValueCollection对象,我需要将它转换为一个Hashtable对象,最好是在一行代码中。 我怎样才能做到这一点? 回答1 您应该考虑使用泛型字典,因为它是强类型的,而 Hashtable 不是。 试试这个: NameValueCollection col = new NameValueCollection(); col.Add("red", "rouge"); col.Add("green", "verde"); col.Add("blue", "azul"); var dict = col.AllKeys .ToDictionary(k => k, k => col[k]); 编辑:根据您的评论,要获得 HashTable,您仍然可以使用上述方法并再添加一行。 您总是可以在一行中完成这项工作,但 2 行更具可读性。 Hashtable hashTable = new Hashtable(dict); 或者,使用循环的 .NET 3.5 之前的方法是: Hashtable hashTable = new Hashtable(); foreach (string key in col) { hashTable.Add(key, col[key]); } 回答2 它需要不止一行,但它非常简单 NameValueCollection nv = new

2022-01-16 02:52:47    分类:技术分享    c#   .net   .net-3.5

如何一次性将多个针对 3.5 的项目(相同的解决方案)升级到 4.0?(How can I upgrade multiple projects (same solution) that's targeting 3.5 to 4.0 in one go?)

问题 在一个大型解决方案中,我们有大约 100 个项目,所有项目都针对 3.5,目前在 VS.NET 2010 中。 现在我们想把它升级到.NET 4.0,我是不是必须一一去改变他们的目标? 或者有什么方法可以自动化这个过程? 回答1 Target Framework Migrator 扩展效果很好。 安装后,只需转到Tools -> Target Framework Migrator 回答2 在升级许多项目和类似操作时,我通常使用在文件中查找和替换。 首先我升级一个项目并比较结果,然后在我的 .csproj 文件中搜索并替换相关部分。 回答3 是的。 您将不得不分别更改它们以使用 .Net 4.0 。 或者您可以制作一个脚本来更改所有项目文件的文本并更改支持的框架。 但是,这将需要更多的时间,而不是仅仅通过所有这些并改变它们。 请注意,您不必这样做。 有向后兼容性.. 编译为与 .Net 3.5 一起使用的项目将与 .Net 4.0 一起使用 您真正需要做的只是将安装项目更改为包含 .Net 4.0 作为先决条件。 除此之外,在您真正想要使用新框架中的某些内容之前,您无需更改框架。 回答4 我不确定从 3.5 升级到 4.0,但如果你从 2.0 升级到 4.0,你会看到 VS2010 实际上添加了一个默认的 app.config 文件(如果你没有自己的)

2022-01-16 01:13:42    分类:技术分享    .net   visual-studio-2010   .net-3.5   .net-4.0   upgrade

可以在 3.5 MsTest 单元测试程序集中编写测试吗?(Can Tests be written in 3.5 MsTest Unit Test assemblies?)

问题 嗨:我很喜欢玩 Pex 和 Moles……现在是时候认真使用它来尽可能多地覆盖旧版应用程序了。 我们已经开始转换为 .NET 3.5(客户端还不能托管在 .NET 4.0 中) 我们注意到我们在让 Moles 工作时遇到了麻烦。 如果测试项目程序集是 .NET 4.0 似乎可以工作——但是当将单元测试程序集框架转换回 .NET 3.5 时(在安装 Visual Studio 2010 SP1 以提供该功能之后)它停止工作。 一直抱怨“您只能使用针对 .NET Framework 3.5 的测试程序集中的默认主机适配器运行测试” 如果客户希望一切都在 .NET 3.5 中——包括单元测试……有什么想法吗? 回答1 在 MS Visual Studio 测试团队博客的这篇文章的末尾,在“已知限制”部分中,它指出: 仅在默认主机适配器中支持执行 .NET Framework 3.5 测试。 Moles 使用MolesAgentAdapter而不是默认值,因此单元测试库必须与 .NET 4.0 兼容。

2022-01-16 00:29:00    分类:技术分享    .net-3.5   moles   pex   pex-and-moles

使用配置而不是重新编译来更改默认的 SqlCommand CommandTimeout?(Change the default SqlCommand CommandTimeout with configuration rather than recompile?)

问题 我支持 ASP.Net 3.5 Web 应用程序,用户在尝试运行报告时遇到超时错误 30 秒后。 环顾网络,更改代码中的超时似乎很容易,不幸的是我无法访问代码并重新编译。 无论如何要为 Web 应用程序、工作进程、IIS 或整台机器配置默认值吗? 这是堆栈跟踪到它在 System.Data 中的位置,以防我遗漏一些其他问题: [SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.] System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +1948826 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4844747 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject

2022-01-15 19:57:10    分类:技术分享    asp.net   sql-server-2005   .net-3.5   iis-6   windows-server-2003

Change the default SqlCommand CommandTimeout with configuration rather than recompile?

I am supporting an ASP.Net 3.5 web application and users are experiencing a timeout error after 30 seconds when trying to run a report. Looking around the web it seems it's easy enough to change the timeout in the code, unfortunately I'm not able to access the code and recompile. Is there anyway to configure the default for either the web app, the worker process, IIS or the whole machine? Here is the stack trace up to the point where it's in System.Data in case I'm missing some other problem: [SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the

2022-01-15 17:33:44    分类:问答    asp.net   sql-server-2005   .net-3.5   iis-6   windows-server-2003

无法捕获由通过 PInvoke 调用的 C dll 引起的异常(Can't catch exception caused by C dll called via PInvoke)

问题 我正在编写一个使用最新 MediaInfoLib Dll 的 C# .NET 3.5 程序。 似乎它会导致某些文件出现异常。 我想捕捉这些异常并确保我的程序继续运行, 但由于某种原因,我无法用简单的 try/catch 语句来捕捉它。 PInvoke 方法: [DllImport("MediaInfo.dll")] private static extern IntPtr MediaInfo_New(); [DllImport("MediaInfo.dll")] private static extern IntPtr MediaInfo_Open(IntPtr Handle,MarshalAs(UnmanagedType.LPWStr)] string FileName); 用法: Handle = MediaInfo_New(); try{ MediaInfo_Open(Handle, FileName) } catch { } 调用 MediaInfo_Open(Handle, FileName) 可能会导致异常。 我的程序没有使用 try/catch 语句捕获错误,而是退出并且“vshost32-clr2.exe”崩溃。 (它也作为发布版本崩溃并且没有附加调试器) 在网上搜索后,我发现有人建议检查“启用非托管代码调试”,这只导致我的程序退出而没有 vshost32

2022-01-15 17:23:08    分类:技术分享    c#   exception   .net-3.5   pinvoke   try-catch

Can't catch exception caused by C dll called via PInvoke

I'm writing a C# .NET 3.5 program wich uses the latest MediaInfoLib Dll. It seems that it causes an exception for some files. I want to catch those exceptions and ensure my program continues running, but for some reason I can't catch it with a simple try/catch statement. PInvoke Methods: [DllImport("MediaInfo.dll")] private static extern IntPtr MediaInfo_New(); [DllImport("MediaInfo.dll")] private static extern IntPtr MediaInfo_Open(IntPtr Handle,MarshalAs(UnmanagedType.LPWStr)] string FileName); Usage: Handle = MediaInfo_New(); try{ MediaInfo_Open(Handle, FileName) } catch { } Calling

2022-01-15 10:20:08    分类:问答    c#   exception   .net-3.5   pinvoke   try-catch

Serialize() 不使用 Sgen 生成的 .XmlSerializers.dll(Serialize() not using .XmlSerializers.dll produced with Sgen)

问题 我的 .NET 3.5 库中有一个 sgen 步骤,在输出目录中生成正确的 XYZ.XmlSerializers.dll。 序列化性能仍然很差,我发现 .NET 仍在运行时调用 csc。 使用进程监视器,我看到 .NET 正在搜索一个名为“XYZ.XmlSerializers.-1378521009.dll”的 dll。 为什么文件名中有“-1378521009”? 如何告诉 .NET 使用 sgen 生成的“普通”DLL? 回答1 使用 Reflector 稍微研究一下,当您使用 XmlSerializer(Type, string) 构造函数并指定自定义命名空间时,这似乎会发生。 尝试改用 XmlSerializer(Type) 构造函数。

2022-01-15 05:43:39    分类:技术分享    c#   visual-studio-2008   .net-3.5   xml-serialization   sgen

为什么覆盖 .GetHashCode 会清除 WinForms 中的这些数据绑定值?(Why would overwriting .GetHashCode clear these databound values in WinForms?)

问题 我们遇到了一个奇怪的错误,我们在调试时遇到了问题。 我们有一个使用 Microsoft CAB、DevExpress 组件和 .Net 3.5 的 MDI 工作区。 如果用户在工作区中打开两个窗口,每个窗口都包含一个绑定到两个单独数据模型的UserControl ,然后将它们都最小化,则要最小化的第一个窗口会在第二个最小化时清除其绑定字段。 数据模型的.Equals和.GetHashCode方法已被覆盖,因此这两个数据模型被视为相等。 如果我们改变它使它们是唯一的,我们就不会得到这种行为。 这是一些显示问题的示例伪代码 var a = new MyWindow(); a.DataModel = new SomeClass(123); a.ShowInMdiWorkspace(); var b = new MyWindow(); b.DataModel = new SomeClass(123); b.ShowInMdiWorksace(); a.Minimize(); // If SomeClass.GetHashCode() is overwritten to consider two objects // as equal based on the value passed in, then the data bindings for A // get cleared on

2022-01-15 02:35:04    分类:技术分享    c#   winforms   .net-3.5   devexpress   mdi