Posts

DateTimePicker and DateTime.MaxValue

For some unknown reason, the Winforms DateTimePicker control does not allow for dates higher than 9998-12-31. Trying to set the DateTimePicker MaxDate property of DateTime.MaxValue will result in an exception. This is a limitation imposed by the component itself. Good news is there is a small trick to overcome this limitation. It requires to update the static MaxDateTime property to an arbitrary value (DateTime.MaxValue in our case). Lets put up some reflection code for that purpose: var  dtpType =  typeof ( DateTimePicker ); var  field = dtpType.GetField( "MaxDateTime" ,  BindingFlags .Public |  BindingFlags .Static); if  (field !=  null ) {     field.SetValue( new   DateTimePicker (),  DateTime .MaxValue); } Just copy and paste this code into the startup method. Basically it needs to run before any DateTimePicker control is created. Please note that running this code can have side eff...

Create UserControl with inline content

Let's say you want to create a user control that contains some literal text: < uc1:InlineContent > This is some standard text message </ uc1:InlineContent > Here is the simplest UserControl that matches this description: using System.Web.UI; [ParseChildren(ChildrenAsProperties = true , DefaultProperty = " Content " )] public partial class InlineContent : System.Web.UI.UserControl { [PersistenceMode( PersistenceMode.EncodedInnerDefaultProperty)] public string Content { get; set; } }

Adding a delay before processing Textbox events

Typical scenario: You provide the user with a TextBox he can use to type a filter over a big chunk of data that takes a lot of time to process. Most of the time, you would handle the TextChanged event of the TextBox and issue a filter operation over the data source using the character(s) available in the TextBox. Typical problem: The user complains because he has to wait between the key strokes even if he already knows a filter that would allow the search to take place in a matter of a few seconds. Solution: Introduce a delay between the last key stroke and the processing using a timer. Walkthough: Create a new Winforms project with a Form. Add a TextBox (named textBox), a ListBox (named listBox). To mimic a very slow data source, we will create a dummy class: public class VerySlowDataAccess { private static string [] data = null ; static VerySlowDataAccess () { data = new [] { "AAAAAA1" , "AAAAAA2...

Visual Studio 2010 Training Kit

For those who are looking for a good place to start with .NET 4.0 and Visual Studio 2010, you can download from Microsoft a complete training kit containing a whole lot of first class information about the next major .NET release and its sidekick. :) Here is the link to the download page : http://www.microsoft.com/downloads/details.aspx?FamilyID=752CB725-969B-4732-A383-ED5740F02E93&displaylang=en

Things I love about Visual Studio 2010: IntelliTrace

Image
IntelliTrace is the next step in evolution for debuggers. It allows you to track everything that is happening during a debug session. It can track actions like clicking on a button, reading for a file, executing an ADO.NET call (including the actual call !) and a lot of other things. You can think of IntelliTrace as some sort of log for all actions of the program. You can also record the call stack for each event but it will slow down the debugging experience and you won't be able to use the "Edit and Continue" feature anymore, but it will allow to have much more details about the execution context of each event.

SSL problem when installing TFS 2010

I had this error when trying to install TFS 2010 Beta 2 on a shiny new Windows Server 2008 R2 : TFxxxxxx: SQL Server Reporting Services is configured to require a secure connection, however no HTTPS URL is configured with a valid certificate So first thing was to remove the SSL binding from the report server (using the Reporting Services Configuration Manager), but it did not change anything from the TFS configuration checker point of view. The fact is this checker does not care about whether SSL is actually in use for the report server, it simply checks IF SSL can be enabled in the report server. That means that you must completely disable SSL and this can only be done by modifying the .config file of the report server. Just navigate to your report server folder (usually \MSRS10.MSSQLSERVER\Reporting Services\ReportServer), open the rsreportserver.config file for editing and locate the parameter named SecureConnectionLevel and set its value to 0 to deactivate security). Re-run ...

Entity Framework 4.0 and POCO

One of the thing that annoyed me most in Entity Framework 1.0 was the lack of support for POCO. I like to use a specific vertical layer for entities, and I like those entities to have only properties and to be POCO to say it simply. The problem in EF 1.0 is that entities are forced to inherit from a class. I could also use the IPOCO interfaces but it was a lot of code for little benefit. The great thing I love in EF 4.0 (even if it is a beta) is that I can generate the edmx file without generating the classes. So basically, I have a EDMX file containing all the XML stuff (conceptual model, physical model and mappings) and I create my classes that Object Services will use. That way, I can put real POCOs in my entity layer. This is an entity that I can create and use with EF (and the corresponding EDMX) : public class Client { public int ID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public Address Address { get; set; } } EF wi...