Tag: .net 3.5

将BitmapImage转换为灰度,并保持alpha通道

我在将BitmapImage(WPF)转换为灰度时遇到了问题,同时保留了alpha通道。 源图像是PNG。 这里的MSDN文章工作正常,但它删除了alpha通道。 有没有快速有效的方法将BitmapImage转换为灰度?

如何确定用户来自asp.net的位置?

如何确定用户登陆我的网页时的来源。 他们来自谷歌链接? 他们是否使用了collections夹链接? 他们输入了url吗?

在调用ApplyResources之后重新应用动态添加的UserControl的布局

在WinForms应用程序中, Panel用作占位符以将单个用户控件显示为导航策略:每当用户希望导航到给定区域时,相应的用户控件将添加到Panel。 简化: contentPanel.Controls.Clear(); userControl.Dock = DockStyle.Fill; contentPanel.Controls.Add(userControl); 由于要求不受我的控制,表单必须支持动态切换语言。 这是使用Hans Passant的答案实现并正常工作,并修改使用用户控件的资源管理器,该管理器正确获取并将本地化文本应用于控件。 但是,在从User Control的相应资源文件中应用资源之后, DockStyle.Fill导致的布局将丢失,因为User Control的组成控件本身并未设置为具有DockStyle.Fill 。 这会导致控件不再拉伸以填充可用区域,并且仅限于设计器/资源文件中定义的原始大小。 请注意,在应用资源后,User Control的Dock属性仍然正确设置为DockStyle.Fill 。 我创建了一个示例应用程序来说明/重现问题:下面的表单有一个面板,动态添加用户控件并设置为DockStyle.Fill 。 用户控件的标签位于默认语言环境的左上角和德语语言环境的右上角。 我希望表单捕捉标签,该标签固定在表单右边缘的右侧,但用户控件的大小会重置为设计时的值。 查看源代码 。 如果我在德语区域设置上启动表单,则标签正确地布置在表单的右边缘: 我想要发生的是调用ApplyResources后保留布局。 当然,我可以简单地制作控件的Location和Size属性的副本(如上面提到的相同问题的另一个答案中所建议的),但不幸的是,这些属性的值在区域设置之间是不同的。 因此,在应用本地化字符串和定位之后,如何指导用户控件重新布局其所有控件? 我试过的 通过查看InitializeComponent() ,我尝试调用PerformLayout()到Panel容器,用户控件和表单无济于事。 在调用ApplyResources之前和之后添加SuspendLayout()和ResumeLayout(true) ,也没有成功。 其他实施细节 对实例化用户控件的引用保存在主窗体的私有字典中。 引发该控件的导航时,将删除先前的用户控件,并使用上面的代码段添加现有引用。 对用户更改语言的事件做出反应: protected virtual void OnChangeCulture(CultureInfo newCulture) { System.Threading.Thread.CurrentThread.CurrentCulture = newCulture; System.Threading.Thread.CurrentThread.CurrentUICulture = newCulture; SuspendLayout(); ComponentResourceManager resources = […]

在generics方法中无法将类型更改为可为空

我正在创建一个通用的转换器 以下是通用转换器的示例代码 bool TryReaderParse(object data, out TType value) { value = default(TType); Type returnType = typeof(TType); object tmpValue = null; if (returnType == typeof(DateTime)) { tmpValue = StringToDatetime(data.ToString()); } else if (returnType == typeof(DateTime?)) // THIS IF FIRES { tmpValue = StringToNullableDatetime(data.ToString()); } value = (TType)Convert.ChangeType(tmpValue, returnType); // THROWS } public DateTime? StringToNullableDatetime(string date) { […]

无法捕获由PInvoke调用的C dll引起的exception

我正在编写一个使用最新MediaInfoLib Dll的C#.NET 3.5程序。 它似乎导致某些文件的exception。 我想捕获这些exception并确保我的程序继续运行, 但由于某种原因,我无法通过简单的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)可能会导致exception。 我的程序退出并且“vshost32-clr2.exe”崩溃,而不是使用try / catch语句捕获错误。 (它也作为发布版本崩溃,没有附加调试器) 在搜索网络后,我发现有人建议检查“启用非托管代码调试”,这只导致我的程序退出而没有vshost32-clr2.exe崩溃。 知道我怎么能抓住exception吗?

C#3中的自动属性 ​​- 如果我为set声明一个,必须声明一个get的主体吗?

我正在使用VS 2008,在项目的属性页面中,我看到我的目标是.Net 3.5。 这是我在尝试编译时遇到的错误: AMSDataModels.Vehicle.VIN.get’必须声明一个正文,因为它没有标记为abstract,extern或partial 这是代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace AMSDataModels { public class Vehicle { //NodeID for datastore persistance public Guid NodeID { get; set; } public string VIN { get; set { if (value.Length != 17) throw new ArgumentOutOfRangeException(“VIN”, “VIN must be 17 characters”); } } public string […]

使用语句中的异步方法

注意:我在Unity中使用C#,这意味着.NET 3.5版本,所以我不能使用await或async关键字.. 当我在其中放入一个异步工作的方法时, 使用语句会发生什么? using (WebClient wc = new WebClient()) { wc.DownloadFileAsync(urlUri, outputFile); } SomeMethod1(); SomeMethod2(); 如您所知,在调用DownloadFileAsync()方法之后,将调用SomeMethod1() ,它不在using块中,而DownloadFileAsync()仍然有效 。 所以现在我真的很困惑在这种情况下使用语句和异步方法会发生什么。 是否会在正确的时间调用wc Dispose()而没有任何问题? 如果没有,我该如何更正此示例?

如何以编程方式滚动TreeView?

我需要将TreeView ( Windows窗体 )从TOP滚动到BOTTOM … 我应该澄清一下,我有两个TreeViews ……如果第一个是由用户滚动的,那么第二个treeView必须自动滚动。 我不知道选择了什么节点… 我怎样才能做到这一点?

自定义C#config无法识别的元素exception

我在App.config中有以下针对.NET 3.5 Windows服务的位: 我在configurationServiceSection.config中有这个: 这是代码: using System.Configuration; namespace SomeApp.Framework.Configuration { public sealed class ConfigurationServiceSection : ConfigurationSection { [ConfigurationProperty(“ConfigurationServices”, IsDefaultCollection = true, IsRequired = true)] [ConfigurationCollection(typeof(ConfigurationServices))] public ConfigurationServices ConfigurationServices { get { return (ConfigurationServices)base[“ConfigurationServices”]; } } } public sealed class ConfigurationServices : ConfigurationElementCollection { protected override ConfigurationElement CreateNewElement() { return new ConfigurationService(); } protected override object […]

如何使用.NET Framework 3.5中的数据注释对C#类进行属性validation?

.NET Framework中是否有一种方法可以将一些对象实例与一个对象实例交给一个方法或validation器,该对象实例的类用Data Annotations修饰,并接收一组错误? 我看到有一种方法可以在.NET 4.x中执行此操作 。 但.NET 3.5中是否有类似的机制?