在不同的环境中改变不同的尺寸

一段时间以来,一些使用我的应用程序的人抱怨WinForm的绘制方式有些奇怪。 该表格有一个splitcontainer , panel1固定。 直到今天,我还没有能够重现他们的问题。 我刚刚在运行32位版Win7企业的笔记本电脑上安装了该应用程序。 (应用程序在运行64位版本的Win7的计算机上构建并运行没有问题。) 为了查看发生了什么,我将项目文件复制到笔记本电脑并使用Visual Studio 2012打开它以查看发生了什么。 然而,让我惊呆了,因为我不知道该怎么办。 在开发。 机器(我的64位win7 ent),表格(和拆分容器)尺寸的规格如下: 表格高度:383 表格宽度:707 分体式容器高度:321 拆分容器宽度:691 分离器距离:380 当我在笔记本电脑上加载项目时,规格更改为: 表格高度:419 表格宽度:859 分体式容器高度:397 拆分容器宽度:921 分离器距离:380 现在我终于可以理解一些人无法看到程序应该如何被看到的挫败感。 在32位机器上,分离器部分覆盖了几个按钮,这显然使程序难以使用,因为它们看不到文本。 这有什么原因吗? 我的意思是,如果原始代码设置为特定的大小值,那么无论程序运行在哪里,它都不应该是这样的? (鉴于用户当然没有resize)。 最重要的是,有什么方法可以解决这个问题,而无需构建两个单独的版本?

最有效的Dictionary .ToString()格式化?

将Dictionary转换为格式化字符串的最有效方法是什么。 例如: 我的方法: public string DictToString(Dictionary items, string format){ format = String.IsNullOrEmpty(format) ? “{0}='{1}’ ” : format; string itemString = “”; foreach(var item in items){ itemString = itemString + String.Format(format,item.Key,item.Value); } return itemString; } 有更好/更简洁/更有效的方式吗? 注意:字典最多有10个项目,如果存在另一个类似的“键值对”对象类型,我就不会使用它 另外,既然我无论如何都会返回字符串,那么通用版本会是什么样子?

c#enumerable class – 与VBA兼容

任何人都可以告诉我如何编写C#可枚举类,以便Excel VBA中的“for each”构造正常工作吗? 我尝试了一个名为People的测试类,它实现了IEnumerable并包含一个Person对象数组。 “foreach”构造在C#中运行良好,但在VBA中我只能循环使用老式的方式。 这个VBA代码工作得很好: Dim P As Person Dim PP As New People For i = 0 To PP.Count – 1 Set P = PP(i) Debug.Print P.firstName + ” ” + P.lastName Next i 但这在运行时失败(“对象不支持此属性或方法”): For Each P In PP Debug.Print P.firstName + ” ” + P.lastName Next P 这是C#代码(在VS 2008中可见的已编译COM,用于Excel VBA – […]

在C#中解析XML字符串

我已经查看了同一主题的其他post并搜索了Google,但我对C#NET非常陌生并且不知所措。 我试图解析这个XML … getstaffonline success 1 Admin 2010-03-03 18:29:12 127.0.0.1 2010-03-03 18:30:43 使用此代码.. XDocument doc = XDocument.Parse(strResponse); var StaffMembers = doc.Descendants(“staff”).Select(staff => new { Name = staff.Element(“adminusername”).Value, LoginTime = staff.Element(“logintime”).Value, IPAddress = staff.Element(“ipaddress”).Value, LastVisit = staff.Element(“lastvisit”).Value, }).ToList(); label1.Text = doc.Element(“totalresults”).Value; foreach (var staff in StaffMembers) { listBox1.Items.Add(staff.Name); } 我打印出strResponse的内容,XML肯定在那里。 但是,当我单击此按钮时,没有任何内容添加到listBox1或label1所以我有些错误。

SQLite错误:’DbProviderFactories’部分每个配置文件只能出现一次(IBM Client Access)

我正在使用我的应用程序Entity Framework和System.Data.SQLite在.NET 4.5上使用WPF和C#在我的机器上运行良好,但在测试机器上,当我通过EntityFramework访问sqlite数据库时收到此错误: “DbProviderFactories”部分每个配置文件只能出现一次。 我发现错误是在测试机器中,在machine.config中: 我删除了最后一个空元素,现在一切正常。 我想我有一些与IBM.Data.DB2.iSeries istallation(IBM Client Access)相关的东西。 我的问题是:如何在不手动编辑machine.config的情况下删除空元素? 我尝试在app.config文件中插入标记但不起作用。 我发现其他类似于我的问题,但没有人建议如何解决问题而无需手动编辑machine.config来解决问题。 这是我的app.config文件:

如何在asp.net 5项目中添加本地dll

我试图让ASP.NET 5网站使用visual studio 2015预览版,我想在本地文件系统中将dll添加到ASP.NET 5项目中。 但我找不到这个选项,是否不再可能添加本地DLL? 如果是,为什么?

当涉及到可变值类型时,如何处理async / await产生的副作用?

请考虑以下示例代码: using System.Diagnostics; using System.Threading.Tasks; public struct AStruct { public int Value; public async Task SetValueAsync() { Value = await Task.Run(() => 1); } public void SetValue() { Value = 1; } } class Program { static void Main(string[] args) { Test(new AStruct()); TestAsync(new AStruct()).Wait(); } private static async Task TestAsync(AStruct x) { Debug.Assert(x.Value == […]

下拉列表更好地作为ViewBag或模型C#/ .NET MVC4的一部分

可能很简单,但我似乎错过了一些东西。 两种型号: public class Hardware { [Required] public int Id { get; set; } public int SerialNum { get; set; } public int ProductNum { get; set; } public string Notes { get; set; } public DateTime PurchaseDate { get; set; } public DateTime WarrantyExpiration { get; set; } public virtual Manufacturer Manufacturer { get; […]

无法加载文件或程序集“Magick.NET-x86.DLL”或其依赖项之一

我使用了Magick.NET,它是ImageMagick的.NET包装器,它会在客户端计算机上抛出上述错误。 它在我的机器上工作正常。 我没有安装ImageMagick所以我根本无法理解我在客户机上需要做什么。 我安装了VS 2012。 此外,Magick.NET包含ImageMagick,我认为它使用C ++ / CLI并将.NET接口暴露给本机ImageMagick,所有这些都在一个DLL中。 那么它需要什么DLL呢? (我刚刚发现了这个错误,所以发布了我找到的解决方案。)

在null之前转换为对象检查覆盖等于

在这里阅读关于覆盖相等运算符的msdn文章 以下片段让我感到困惑…… // If parameter cannot be cast to Point return false. TwoDPoint p = obj as TwoDPoint; if ((System.Object)p == null) // <– wtf? { return false; } 为什么在这里有一个转换为Object来执行null比较?