Tag: .net 3.5

为什么会覆盖.GetHashCode在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 // […]

LINQ使用C#将少数列交换到DataTable的行

我有数据表: location Quarter ppl_required ppl_available BLR Q1 70 35 BLR Q2 50 45 BLR Q3 25 28 BLR Q4 60 58 CHN Q1 77 92 CHN Q2 42 66 CHN Q3 29 20 CHN Q4 22 24 有没有更好的方法可以使用LINQ或LINQ高级function(使用.NET3.5 / 4.0 / 4.5框架)以非常简单或简短的方式[ 无循环 ]将以下DataTable作为输出。 Location ppl_Required_Q1 ppl_Required_Q2 ppl_Required_Q3 ppl_Required_Q4 ppl_available_Q1 ppl_available_Q2 ppl_available_Q3 ppl_available_Q4 BLR 70 […]

如何在SelectedIndexChanged事件之前检测TabControl中标签页的更改?

我目前通过SelectedIndexChanged事件确定单击了tabcontrol的哪个页面。 我想在选定的索引实际更改之前检测,以进行validation。 例如,用户单击他们正在查看的标签页以外的标签页。 如果表单数据未保存,则会显示一个对话框,询问是否可以继续。 如果用户单击否,则用户应保留在当前选项卡上。 目前我必须记住上一个标签页,并在回答“否”后切换回它。 我考虑过MouseDown(和各种计算逻辑),但我怀疑这是最好的方法。

可以使用Linq在Sql和DataTable之间编写连接吗?

我有一个过程,根据时间戳从多个数据库(MySql)中提取客户信息。 我将这些数据存储到DataTable 。 数据表表示现有客户信息的更新以及新客户信息。 我想基于一个常量值, CompanyID和CustomerID删除目标数据库(SqlServer)中的任何欺骗。 所以,我认为连接会给我目标数据库中的dupes的RecordID,将List (或某些集合机制)传递给DELETE方法。 是)我有的: using (var context = new DataContext(SqlConnection)) { var tblSource = context.GetTable(); var dupeIDs = from currCust in tblSource join newCust in myTable.AsEnumerable() on currCust.CompanyID equals newCust.Field(“CompanyID”) where currCust.CustomerID.Equals(newCust.Field(“CustomerID”) select currCust.RecordID; } 这显然不起作用。 我将稍微更新确切的错误消息,但这不会编译。 首先,我的连接语法是否正确我想要实现的目标? 其次,如何编写这个Linq来连接DataTable和目标SqlServer数据库? 事后想想 – 一旦我有一个dupe RecordID集合,是否有可能使用Linq来删除目标数据库中的记录? 编辑为了澄清这个过程,我有像这样的传入数据表并包含在DataSet : Table1 CompanyID CustomerID Field1 Field2 […]

如何在不使用AllowTransparency的情况下删除WPF窗口的非客户区域

我想从我的WPF自定义窗口中删除resize边框。 我已经发现我必须处理WM_NCCALCSIZE消息并返回0.这将删除边框并将窗口与窗口的左上角对齐。 问题是,通过这样做,客户端区域增加,WPF根控制没有。 这会在窗口的左侧和底部产生黑色边缘,我想摆脱它。 我正在使用VS2010 C#Windows XP,并希望在Windows XP和Windows 7下都可以使用它。 提前致谢。 编辑:我发现是什么导致了黑色边缘,它们是落后的窗口。 现在似乎问题是窗口的根元素不占用整个窗口。 当我将其边距设置为负值时,它会覆盖黑色区域。 显然布局传递正常,所需的大小与窗口相同,但渲染大小不同。 我还发现,通过从窗口样式中删除WS_THICKFRAME可以解决整个问题。 问题在于仅在使用WS_THICKFRAME时启用的resizefunction。 我正在使用WM_NCHITTEST进行resize,如果窗口知道它没有resize边框,它将关闭其resizefunction。 我想让根元素占据整个窗口以消除黑色窗口背景,或者在没有粗框的情况下启用原生resizefunction。 谢谢。

.NET 3.5 | 绑定到视图模型属性时,WPF Textbox拒绝更新自身

在我开始解释我的问题之前,请注意我的目标框架是.NET 3.5。 我有一个文本框,其文本绑定到viewmodel属性。 我的要求是,当用户输入一些东西(通过键盘和鼠标粘贴)进入文本框时,应该清理其中的任何垃圾字符,并使用替换的字符串更新文本框[在下面的示例中”要替换用’h’]。 XAMLCode: ViewModel属性: private string _value; public string Value { get { return _value; } set { if (_value == value) return; _value = value; //replaces ‘s’ with ‘h’ and should update the textbox. _value = _value.Replace(‘s’,’h’); RaisePropertyChanged(() => Value); } } 以上根本不适合我。 视图模型属性设置器正在触发…值正在被替换。但是文本框没有得到更新。 令人困惑的是,这完全适用于.Net4.0。 你知道为什么这不会工作以及这个问题的潜在解决方案,当然除了升级到.NET 4.0之外? 我的要求: 用户可以键入以及将任何内容粘贴到多行文本框中。 文本可以包含垃圾,在进入文本框之前应该更改垃圾。 提前谢谢,-Mike

对集合中的所有对象运行方法

所以我有一系列由一系列Bloops创建的Razzies。 我使用Linq查询检索此集合。 参考: Linq选择某些属性到另一个对象? 用于查询。 我想知道是否可以在返回集合之前在所有新创建的Razzies上运行一个方法,或者甚至在不使用for循环之后立即运行。 我试过这个: Dim results = From item In bloops _ Select New Razzie() With _ { _ .FirstName = item.FirstName, _ .LastName = item.LastName _ }.UpdateAddress(item.Address) 但它什么也没有回报。

如何让DebuggerBrowsable RootHidden工作?

我昨天读到了DebuggerBrowsable属性,听起来很棒,但是当我试图让它在测试中工作时,它似乎没有任何区别。 我正在使用VS 2008版本9.0.30729 1 SP,.Net 3.5 SP1,MSTest框架 [TestClass] public class TestingDebuggerBrowsable { [TestMethod] public void JustToDemonstrateDebugging() { var foo = new MyExposedClass(); foo.ToString(); // I put a breakpoint here, and debugged the test } } public class MyExposedClass { public MyExposedClass() { ShouldBeSeeingThisInMyDebugger = new List {“foo”, “bar”}; } [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] public IList ShouldBeSeeingThisInMyDebugger { get; […]

检查表是否存在在SQLite中保持连接打开

所以我有一个方法可以检查数据库中是否存在一个表,其定义如下: internal override bool TableExists(string tableName) { bool tableExists = false; // Check the Tables schema and see if the table exists using (SQLiteConnection conn = (SQLiteConnection) CreateConnection()) { conn.Open(); DataRow[] rows = conn.GetSchema(“Tables”).Select(string.Format(“Table_Name = ‘{0}'”, tableName)); tableExists = (rows.Length > 0); } // Actually called elsewhere in the code, just here for testing. File.Delete(DatabaseEnvironmentInfo.GetPrimaryDataFile(DatabaseName)); […]

在.NET 3.5中使用WCF DataContractJsonSerializer

我正在尝试使用ASP.NET MVC 2站点中的地理编码代码。 不幸的是,一些代码,特别是DataContractJsonSerializer的使用,只能通过.NET 4.0实现 。 由于我的托管服务提供商不支持.NET 4,我不得不在.NET 3.5中实现该function。 我如何重新编写代码(我在下面重新发布)在.NET 3.5中工作? Google Maps Geocoding API也可以返回XML,如果在3.5中更容易序列化… 下面是我试图从.NET 4转换为.NET 3.5的代码: using System; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; using System.Net; using System.Web; . . . private static GeoResponse CallGeoWS(string address) { string url = string.Format( “http://maps.google.com/maps/api/geocode/json?address={0}&region=dk&sensor=false”, HttpUtility.UrlEncode(address) ); var request = (HttpWebRequest)HttpWebRequest.Create(url); request.Headers.Add(HttpRequestHeader.AcceptEncoding, “gzip,deflate”); request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; […]