=============================================== C1Input 1.0.20071.32004, 01-Jun-2007 =============================================== -- In a C1TextBox with NumericInput set to true, upon entering the control with an initial integer value, pressing the End key and then typing the decimal point, the decimal point is not entered. Fixed. =============================================== C1Input 1.0.20071.32003, 08-Feb-2007 =============================================== -- Fixed a crash that occurred if C1DropDownControl was used in an app built in .NET 1.1 but 2.0 framework was specified to be used via app.config. =============================================== C1Input 1.0.20071.32002, 21-Dec-2006 =============================================== -- when a dropdown form (e.g. calendar) is opened, if it would hit bottom of screen, the form opens above the control instead of below (before, it was shifted just a bit up to fit in screen). =============================================== C1Input 1.0.20071.32001, 10-Oct-2006 =============================================== -- 2007 T1 release. =============================================== C1Input 1.0.20063.31002 10-Oct-2006 =============================================== -- No changes. =============================================== C1Input 1.0.20063.301 26-Jul-2006 =============================================== -- T3 2006 build. =============================================== C1Input 1.0.20062.142 21-Mar-2006 =============================================== -- Added the AllowPartiallyTrustedCallers attribute to the assembly. =============================================== C1Input 1.0.20062.141 16-Feb-2006 =============================================== -- T2 2006 build. =============================================== C1Input 1.0.20053.135 20-Dec-2005 =============================================== -- T1 2006 build. -- Fixed: dropdown form on another dropdown form was shown beneath the first dropdown. =============================================== C1Input 1.0.20053.131 5-Dec-2005 =============================================== -- File and assembly versions changed to 1.0.20053.131. -- In C1TextBox, if ShowFocusRectangle was set to true, caret interfered visually with the focus rectangle. Fixed. =============================================== C1Input 1.0.20053.129 25-Nov-2005 =============================================== -- File and assembly versions changed to 1.0.20053.129. -- Miscellaneous bug fixes. =============================================== C1Input 1.0.20053.117 3-Nov-2005 =============================================== -- File and assembly versions changed to 1.0.20053.117. ------------------ Corrected problems ------------------ -- C1TextBox: MaxLength was ignored when DataType was numeric. Fixed. =============================================== C1Input 1.0.20053.111 23-Oct-2005 =============================================== -- File and assembly versions changed to 1.0.20053.111. ------------------ Corrected problems ------------------ -- Miscellaneous bug fixes. =============================================== C1Input 1.0.20053.107 14-Jul-2005 =============================================== -- File and assembly versions changed to 1.0.20053.107. ------------------ Corrected problems ------------------ -- Fixed a bug in C1DropDownControl: negative GapHeight wasn't working properly. -- Fixed excessive firing of the Resize event on C1TextBox while a form was loading. -- Fixed unneeded firing of ValueChanged event when the dropdown was opened/closed in C1DateEdit and C1NumericEdit controls. -- Corrected drawing of the focus rectangle on a multiline C1TextBox. -- Custom images in C1DbNavigator sometimes were not drawn at runtime. Fixed. -- Fixed some problems with the functioning of NumericInputKeys. -- Fixed design-time problem with C1TextBox: when EmptyAsNull was true, and an empty string was assigned to the Value property, ValueIsDBNull was still false. -- Fixed a problem with scrolling when a C1TextBox was used as an editor in a grid. =============================================== C1Input 1.0.20053.103 15-Jun-2005 =============================================== -- File and assembly versions changed to 1.0.20053.103. ------------------ Corrected problems ------------------ -- Fixed bug added in build 97: KeyDown event fired twice for any key in C1TextBox and inherited controls. ------------ New features ------------ -- New public enum: public enum ValueChangedBehaviorEnum { Default, FireOnAnyChange, } -- New public runtime-only property added to C1TextBox: public ValueChangedBehaviorEnum ValueChangedBehavior {get;set;} This property has been added to allow backward compatibility with the old behavior, when the ValueChanged event was fired on any text change. Now by default (when ValueChangedBehavior has the value ValueChangedBehaviorEnum.Default) the ValueChanged event is fired only when the Value property changes. To revert to the old behavior, set the value of ValueChangedBehavior to ValueChangedBehaviorEnum.FireOnAnyChange. =============================================== C1Input 1.0.20052.99 18-Apr-2005 =============================================== -- File and assembly versions changed to 1.0.20052.99. ------------------ Corrected problems ------------------ -- When the drop down form of C1DateEdit was opened programmatically via the OpenDropDown method, the input values were ignored when the drop down closed. Fixed. -- When custom placeholders were added in the collection editor at design time, an error message would show up immediately upon pressing the add button. Fixed. =============================================== C1Input 1.0.20052.97 5-Apr-2005 =============================================== -- File and assembly versions changed to 1.0.20052.97. ------------ New features ------------ -- New public runtime-only property added: string BaseText {get;set;} Allows to directly set the text of the control without any validating, parsing or formatting. The primary intended use of this property is C1DropDownControl with custom drop down forms, when the dropdown is open, and it is required to programmatically change the text shown in the textbox (e.g. clear the text in response to a calculator clear button click), and the text does not need to be validated at the moment (because it will be validated later, when the dropdown closes etc.). ---------------- Changed Behavior ---------------- -- When developing classes derived from C1DropDownControl, the dropdown form (derived from DropDownForm) should not be a static member of the dropdown control class, but rather should be created in the instance ctor of the dropdown control class. If the same instance of the dropdown form has to be used, the dropdown control's DropDownForm property should be programmatically set to the form's instance each time before the form is shown (dropped down), as at any moment the form can belong to only one dropdown control. -- Samples InheritedDropDown, NumPadDropDown1 and NumPadDropDown2 changed to accomodate the behavior changes described above. ------------------ Corrected problems ------------------ -- DBCS/SBCS characters can not be entered in a C1TextBox as they are not supported and could not be entered correctly. -- Miscellaneous bug fixes. =============================================== C1Input 1.0.20052.91 11-Mar-2005 =============================================== -- File and assembly versions changed to 1.0.20052.91. ------------ New features ------------ -- New public method added to C1TextBox: void ValidateText(); Validates the current text and updates Value from it. ------------------ Corrected problems ------------------ -- Miscellaneous bug fixes affecting C1TextBox, C1PictureBox, C1DropDownControl, C1DBNavigator. =============================================== C1Input 1.0.20052.89 25-Feb-2005 =============================================== -- File and assembly versions changed to 1.0.20052.89. -- Miscellaneous bug fixes. =============================================== C1Input 1.0.20051.85 14-Feb-2005 =============================================== -- File and assembly versions changed to 1.0.20051.85. ------------------ Corrected problems ------------------ -- In C1NumericEdit, when the drop down calculator shows, any previously entered value can be edited in the calculator rather than being immediately cleared on new calculator input. -- When the MultiLine property of a C1TextBox was changed, its size was not always propertly adjusted. Fixed. -- Miscellaneous bug fixes. =============================================== C1Input 1.0.20051.83 28-Jan-2005 =============================================== -- File and assembly versions changed to 1.0.20051.83. ------------------ Corrected problems ------------------ -- In C1DropDownControl, the ButtonCursor affected other areas of the control. Fixed. -- If a C1PictureBox was bound to a db, once the picture has been opened and re-saved in the database, it stopped showing in the C1PictureBox. Fixed. -- In wildcard validation, if a character followed an escaped special character (\*, \t, \r, \n), validation would fail. Fixed. -- The C1PictureBox.ImageToByteArray method would throw an exception when using one of the Emf/Exif/Icon/MemoryBmp/Wmf image formats. Fixed. -- At design time, if EmptyAsNull was set to true on a C1TextBox, and the Value was cleared, the ValueIsDBNull would still be false. Fixed. -- In C1TextBox with RightToLeft set to Yes, the focus rectangle did not display correctly. Fixed. =============================================== C1Input 1.0.20051.81 30-Dec-2004 =============================================== -- File and assembly versions changed to 1.0.20051.81. ------------------ Corrected problems ------------------ -- Sometimes when using prevalidation, exception would occur on leaving the control: "Specified argument was out of the range of valid values". Fixed. -- A mask set using the EditMask property of C1TextBox was left disabled if the ReadOnly property was set to true and then back to false. =============================================== C1Input 1.0.20051.79 20-Dec-2004 =============================================== -- File and assembly versions changed to 1.0.20051.79. ------------ New Features ------------ -- New integer property ButtonWidth added to C1DropDownControl. If it is set to a value greater than 0, buttons are set to the specified width instead of the default one. -- New boolean property Done added to the UpDownButtonClickEventArgs class. If it is set to true in the user's UpDownButtonClick event handler, no built-in processing is done. This allows the user to override the default behavior of the buttons. ------------------ Corrected problems ------------------ -- Setting the width of the C1TextBox to -1 now hides the control, which is the behavior of the standard textbox control. -- When a C1DropDownControl was placed on a form with FixedTool or SizableTool border, the form would hide behind other open forms when the drop down form was closed. Fixed. -- If a read-only C1TextBox had TextDetached set to true and had an edit mask, it could be edited. Fixed. -- A multi-line C1TextBox with multi-line PreValidate.RegexOptions never matched a regex pattern. Fixed. =============================================== C1Input 1.0.20044.77 15-Sep-2004 =============================================== -- No changes except for the Q4 build number. Note that assembly version has also been updated to 1.0.20044.77. =============================================== C1Input 1.0.20043.75 22-Jun-2004 =============================================== ------------------ Corrected problems ------------------ -- C1TextBox.ModifiedChanged event was firing twice for any real change. Fixed. -- C1Label: when AutoSize was set to true, and TextAlign was set to any of the TopRight/MiddleRight/BottomRight, the text was slightly clipped on the left. Fixed. -- C1Label: when AutoSize is set to true, and the label is selected in the Visual Studio designer, a non-resizable selection border is drawn instead of the sizing handles. =============================================== C1Input 1.0.20043.73 31-May-2004 =============================================== -- No changes except for the Q3 build number. =============================================== C1Input 1.0.20042.71 28-May-2004 =============================================== -- The default size of C1TextBox has been made 1 pixel higher. This makes it the same as the default height of the standard .NET textbox control with the default (3D) border. ------------------ Corrected problems ------------------ -- When a C1 dropdown control's drop down window was opened when the master form was TopMost, and the drop down was closed as a result of a mouse click elsewhere on the form, focus went to some other app. Fixed (the drop down form is TopMost, and the container form is now made temporarily non-TopMost while the dropdown is open). =============================================== C1Input 1.0.20042.69 19-Apr-2004 =============================================== -- Corrected some problems when a C1Input control was used as an embedded editor in a C1TrueDBGrid or C1FlexGrid. =============================================== C1Input 1.0.20042.67 11-Mar-2004 =============================================== -- C1NumericEdit: Behavior change in the drop down calculator: before, the calculator differentiated between the regular and extended (located on the numeric keypad) Enter keys. On extended Enter, instead of closing the calculator, the "=" key was sent instead. This differentiation has been removed. Instead, the "=" can be sent by pressing Ctrl-Enter. ------------------ Corrected problems ------------------ -- C1NumericEdit: when the drop down calculator is open, pressing relevant keys (e.g. digits, "=", etc.) visually presses the corresponding buttons on the calculator. But this did not work when FlatStyle.System was used on the calculator. Fixed. =============================================== C1Input 1.0.20042.65 10-Mar-2004 =============================================== ------------ New Features ------------ -- For C1TextBox, C1NumericEdit and C1DateEdit, support has been added for embedding in C1 grids (TrueDBGrid and FlexGrid). These controls now implement methods defined in the IC1EmbeddedEditor (declared in C1Common build 1.0.20042.118 or later). Please note that the C1Input controls do not inherit from IC1EmbeddedEditor (rather, they just contain the methods' implementation), so do not depend on C1Common containing that interface declaration (the grids invoke the methods via reflection). ------------- Added Methods ------------- -- New method overload: void Margins.Set(System.Drawing.Printing.Margins printMargins) Sets the margins values from the system Margins class (no conversion is done on the values, they are treated as pixels). ------------------ Corrected problems ------------------ -- Fixed bug preventing DropDownForm.OwnerControlTextChanged from firing unless the dropdown form was already open. In particular, this prevented tutorial 8 from working as described (typing in the text box with a drop down did not open the drop down form). -- If a form with C1Input controls on it was not disposed explicitly, it was never garbage collected. This did not affect forms shown with Form.Show() as the system calls Dispose() on them when the user closes the form, but did affect forms shown with Form.ShowDialog() unless the developer calld Dispose() when the call returned. =============================================== C1Input 1.0.20042.61 9-Feb-2004 =============================================== -- 2004 Q2 build. =============================================== C1Input 1.0.20041.60 9-Feb-2004 =============================================== ------------------ Corrected problems ------------------ -- Added a workaround for a bug in MDI apps: if a control in an MDI child gets focus, and then the user clicks on another MDI child in the same app, the Leave event is fired. But when the user returns to the 1st control, Enter is not fired. If the 1st control was a C1TextBox, this resulted in many things not working after the user returned focus (e.g. user input was not checked any more etc.). -- If a multiline text was pasted into a C1TextBox, extra blank lines were added between the real lines. Fixed. =============================================== C1Input 1.0.20034.59 15 Dec 2003 =============================================== ------------------ Corrected problems ------------------ -- Fixed a problem with processing alt+keypress for a label assigned to the Label property of C1TextBox to give focus to a textbox. -- Fixed a problem with displaying right aligned text in C1Label. -- Fixed a bug: it was impossible to paste unicode characters (for example, in Chinese) into C1TextBox and its descendants. -- Fixed a problem with typing double-digit hour in C1TextBox and C1DateEdit using the DateTimeInput mode. =============================================== C1Input 1.0.20034.57 03 Nov 2003 =============================================== ---------------- Added Properties ---------------- ** C1DropDownControl.MouseClickPassThrough ** If this property is True the mouse click is passed through after closing the drop down form. If False the mouse click is consumed by the control after closing the dropdown. [VB] Public Property MouseClickPassThrough As Boolean [C#] public bool MouseClickPassThrough { get; set; } Default: False Applies to: C1DropDownControl C1DateEdit C1NumericEdit ------------ Added Events ------------ ** DateEditMonthCalendar.TodayButtonClick ** Occurs when Today button is clicked. Public Event TodayButtonClick As EventHandler Applies to: DateEditMonthCalendar See also: C1DateEdit.Calendar ** DateEditMonthCalendar.ClearButtonClick ** Occurs when Clear button is clicked. Public Event ClearButtonClick As EventHandler Applies to: DateEditMonthCalendar See also: C1DateEdit.Calendar ------------------ Corrected problems ------------------ -- The Add and Delete buttons can now be used with data sources not supporting IBindingList interface. In such a case the Adding and Deleting events are used for actual data processing. Two events: Adding and Deleting which were hidden in previous versions of C1Input have been returned back and are now public available. Also, two event argument classes: NavigatorAddingEventArgs and NavigatorDeletingEventArgs returned back to the public domain. =============================================== C1Input 1.0.20034.55 17 Oct 2003 =============================================== ---------------- Added Properties ---------------- ** C1TextBox.AutoChangePosition ** If this property is False the user has to press the right arrow key or the next literal character to move to the next date part. [VB] Public Property AutoChangePosition As Boolean [C#] public bool AutoChangePosition { get; set; } Default: True Applies to: C1TextBox C1DropDownControl C1DateEdit ------------------ Corrected problems ------------------ -- If the user had a C1TrueDBGrid and a C1DbNavigator connected to a dataview, and scrolled through the records using the arrow keys, the cells in the grid were correctly highlighted. However, if the user used the arrow buttons of the navigator control, the cells were not highlighted, which was inconsistent. Now the cells are highlighted in that case as well. -- The DataSource property is now mergable in all C1Input controls. So the user can select for example two textboxes and set that property for both controls at once. -- When the user tried to enter a date in the form 26-Sep-2003, C1TextBox and C1DateEdit controls didn't allow to enter "Sep". The user had to enter the number of the month (09 in that case). Now the user is able to enter the month by its name. -- The MaskInfo.SkipOptional and AutoChangePosition properties of C1TextBox are now temporarily set to False when the user pastes text into a control. Previously, if those properties were True they caused incorrect text pasting. -- An internal exception is now not thrown and catched within C1.Win.C1Input.dll if the UxTheme.dll library has not been found on the current machine. -- Fixed a problem with entering the day of the month in the date/time input mode. For example, if the previous date was "15.02.2004" (in dd.MM.yyyy format) and the user wanted to enter "30.09.2003", she had to change the month first because February has only 28 days. Now she can just enter: 30092003. =============================================== C1Input 1.0.20034.54 15 Sep 2003 =============================================== ------------------ Corrected problems ------------------ -- Fixed a problem with selection a date from the drop-down calendar in Windows 98/ME. -- Partially fixed a problem with autorepeat mode in C1DropDownControl, C1NumericEdit, C1DateEdit, and C1DbNavigator controls in Windows 98/ME. =============================================== C1Input 1.0.20033.53 26 Aug 2003 =============================================== ---------------- Added Properties ---------------- ** C1TextBox.WrapDateTimeFields ** If this property is False the month will be automatically incremented when the user spins the date past the end of the month. The same about other parts of the date/time value. [VB] Public Property WrapDateTimeFields As Boolean [C#] public bool WrapDateTimeFields { get; set; } Default: True Applies to: C1TextBox C1DropDownControl C1DateEdit ------------------ Corrected problems ------------------ -- Fixed a performance problem in C1TextBox and its descendants occured when the BorderStyle property is Fixed3D. =============================================== C1Input 1.0.20033.52 21 Jul 2003 =============================================== ---------------- Added Properties ---------------- ** C1TextBox.DisableOnNoData ** Gets or sets whether the text box should be disabled when it is bound to an empty data source, i.e. CurrencyManager.Count = 0. [VB] Public Property DisableOnNoData As Boolean [C#] public bool DisableOnNoData { get; set; } Default: True Applies to: C1TextBox C1DropDownControl C1NumericEdit C1DateEdit ** C1PictureBox.ImmediateUpdate ** Specifies whether the image should be put into the data source right after the Image property has been changed. If it is False (default option) the image shouldn't be put in data source until the following call of the CurrencyManager.EndCurrentEdit() method. [VB] Public Property ImmediateUpdate As Boolean [C#] public bool ImmediateUpdate { get; set; } Default: False Applies to: C1PictureBox ** C1TextBox.ShowContextMenu ** Specifies whether the context menu can be displayed for the control. [VB] Public Property ShowContextMenu As Boolean [C#] public bool ShowContextMenu { get; set; } Default: True Applies to: C1TextBox C1DropDownControl C1NumericEdit C1DateEdit =============================================== C1Input 1.0.20033.51 20 Jun 2003 =============================================== ---------------- Added Properties ---------------- ** C1TextBox.ShowFocusRectangle ** Specifies whether a focus rectangle should be displayed around the client area when the control has the input focus. [VB] Public Property ShowFocusRectangle As Boolean [C#] public bool ShowFocusRectangle { get; set; } Default: False Applies to: C1TextBox C1DropDownControl C1NumericEdit C1DateEdit ---------------- Changed Behavior ---------------- -- If a C1TextBox or its descendant control is bound to an empty data source (with CurrencyManager.Count = 0) it will be disabled. ------------------ Corrected problems ------------------ -- Fixed: all exceptions are caught when the user tries to copy text while the control is used in NumericInput mode or the EditMask property is not empty. =============================================== C1Input 1.0.20033.50 05 Jun 2003 =============================================== =============================================== C1Input 1.0.20032.49 04 Jun 2003 =============================================== ---------------- Changed Behavior ---------------- -- The F4 key now opens a drop-down form including the drop-down calculator and calendar. -- Fixed QA Incident #7839: When the user enters a date in the DateTimeInput mode and uses the DD-MM-YY format, the logical progression to change the date would be to first change the Day then the Month then the Year. Previously, it was impossible to enter, for example, 30 in the Day if the Month set to February. ------------------ Corrected problems ------------------ -- Fixed: when the ReadOnly property of a C1DropDownControl (or its descendant) was True the user was still able to raise the UpDownButtonClick event with the Up/Down arrow keys or using the mouse wheel. -- Fixed: problem with incorrect calculation of font size (actually, this fixes a problem with the Control.FontHeight property of standard .NET controls). -- Fixed: the MediumTime format was incorrect. This is one of the possible values for the FormatType property of C1TextBox, C1Label, and other C1Input controls. =============================================== C1Input 1.0.20032.48 27 May 2003 =============================================== ---------------- Added Properties ---------------- ** C1TextBox.InitialSelection ** Determines the selection position when a control receives input focus. [VB] Public Property InitialSelection As InitialSelectionEnum [C#] public InitialSelectionEnum InitialSelection { get; set; } Remarks: The InitialSelectionEnum enumeration includes: SelectAll - the whole text is selected; CaretAtStart - nothing selected, the caret is moved at the beginning of the text; CaretAtEnd - nothing selected, the caret is moved at the end of the text; Default: InitialSelectionEnum.SelectAll Applies to: C1TextBox C1DropDownControl C1NumericEdit C1DateEdit ------------------ Corrected problems ------------------ -- Fixed a bug with displaying a multiline C1TextBox when its VerticalAlign property was Bottom. -- Fixed a problem in C1TextBox with recreating a window handle when the Font property was changed during control creation. -- Fixed a bug in C1TextBox with updating a value in data source when the dropdown calendar was closed. -- Fixed a bug in the dropdown calculator: after the user pressed Ctrl+R (MR) he was unable to close the calculator with Enter or Esc keys. -- Fixed a minor bug with multiplying and dividing a value by percent. -- Fixed a problem with big fonts (120DPI mode) in a DropDownForm class. Form was enlarged by 25% every time it was opened at design time in 120DPI font mode. =============================================== C1Input 1.0.20032.47 23 May 2003 =============================================== ---------------- Changed Behavior ---------------- -- When the user tries to select a date with the dropdown calendar outside of the [MinDate, MaxDate] interval, the calendar stays open, the invalid date is not selected. ------------------ Corrected problems ------------------ -- Fixed a problem in C1TextBox: a System.NullReferenceException exception is thrown when an application is running in debug mode, the C1TextBox (or its descendant) has the input focus, and the user presses a key that closes the form from either KeyDown, KeyPress, or KeyUp event handler. -- Removed redundant RecreateHandle() call that occured previously when any of the following properties of a C1TextBox control were changed: BackColor, ReadOnly, Enabled. This RecreateHandle call caused some problems with data binding, receiving and losing focus, etc. -- Fixed a bug in the dropdown calendar: if the value of the TodayDate property of the dropdown calendar was outside of the [MinDate, MaxDate] interval and the current value of C1DateEdit control was DBNull, an exception was thrown when the user tried to open the dropdown calendar. -- Fixed a minor problem with drawing borders for the dropdown calculator when used with big fonts (120DPI). =============================================== C1Input 1.0.20032.46 16 May 2003 =============================================== ---------- What's New ---------- -- Added XP look & feel to C1TextBox, C1DropDownControl, C1NumericEdit, C1DateEdit, and C1DbNavigator. To enable XP look & feel for your application, add a manifest file (see example below) in the bin directory. Then, for C1TextBox and other controls set the BorderStyle property to Fixed3D. Also, to use XP-like buttons in the dropdown calculator set the property C1NumericEdit.Calculator.ButtonFlatStyle to the value System. Example: ApplicationName.exe.manifest Setting XPStyle Layout for Application -- Added Label property to C1TextBox and its descendants. -- Added Margins and VerticalAlign properties to C1TextBox and derived controls. Also added corresponding events: MarginsChanged and VerticalAlignChanged. -- New property NumericInputKeys added to C1TextBox and C1NumericEdit. -- Added property VisibleButtons to C1DropDownControl and its descendants. Now there is a new button - Modal - in the C1DropDownControl. Click on this button causes the ModalButtonClick event. -- Added property DaylightTimeAdjustment to C1TextBox, C1DateEdit, and C1Label. -- Added new public class NumericEditCalculator - the dropdown portion of C1NumericEdit control. It has properties: ButtonFlatStyle, DisplayFormat, StoredFormat, FormatOnClose, UIStrings, UseStaticMemory. If the StoredFormat property is not empty, the dropdown calculator displays a button "Fmt" (instead of "MC") allowing to apply the stored format to the displayed number. When UseStaticMemory = True, the dropdown calculator can show a new context menu where the user stores or recalls numbers entered into this or other C1NumericEdit control within the same application. ---------------- Added Properties ---------------- ** C1TextBox.Label ** Label control associated with this input field. [VB] Public Property Label As System.Windows.Forms.Label [C#] public System.Windows.Forms.Label Label { get; set; } Remarks: When the user clicks the label, the input focus is moved to the corresponding C1TextBox or its descendant control. The user can activate the input field by pressing a mnemonic key specified in the associated label. The Enabled property of the label depends on the corresponding property of the input field. Applies to: C1TextBox C1DropDownControl C1NumericEdit C1DateEdit ** C1TextBox.Margins ** The spacing between the input control content and its edges, in pixels. [VB] Public Property Margins As C1.Win.C1Input.Margins [C#] public C1.Win.C1Input.Margins Margins { get; set; } Remarks: C1.Win.C1Input.Margins class is similar to the standard class System.Drawing.Printing.Margins. For more information about this class see the online help. Default: all margins are set to 0. Applies to: C1TextBox C1DropDownControl C1NumericEdit C1DateEdit ** C1TextBox.VerticalAlign ** Vertical alignment of the contents in the control. [VB] Public Property VerticalAlign As VerticalAlignEnum [C#] public VerticalAlignEnum VerticalAlign { get; set; } Remarks: The VerticalAlignEnum enumeration includes Top, Middle, and Bottom. Default: VerticalAlignEnum.Top Applies to: C1TextBox C1DropDownControl C1NumericEdit C1DateEdit ** C1TextBox.NumericInputKeys ** Enables/disables the special keys used when NumericInput = True. [VB] Public Property NumericInputKeys As NumericInputKeyFlags [C#] public NumericInputKeyFlags NumericInputKeys { get; set; } Remarks: The NumericInputKeyFlags enumeration includes flags: F2 - indicates that F2 enters negative infinity (-Infinity); F3 - indicates that F3 enters positive infinity (+Infinity); F4 - indicates that F4 enters the "not a number" value (NaN); F9 - indicates that F9 toggles the sign of the displayed number; Minus - indicates that '-' makes the displayed number negative; Plus - indicates that '+' makes the displayed number positive; Decimal - indicates that Decimal key enters a decimal separator regardless of culture settings; X - indicates that the X key starts entry of the exponent part in scientific-notation numbers; Standard = F9 | Minus | Plus | Decimal | X Default: NumericInputKeyFlags.Standard Applies to: C1TextBox C1DropDownControl C1NumericEdit ** C1DropDownControl.VisibleButtons ** Enumeration specifying which buttons are visible. [VB] Public Property VisibleButtons As DropDownControlButtonFlags [C#] public DropDownControlButtonFlags VisibleButtons { get; set; } Remarks: The DropDownControlButtonFlags enumeration includes: UpDown - Show up/down buttons; DropDown - Show dropdown button; Modal - Show button to start a modal dialog Default: UpDown | DropDown. Applies to: C1DropDownControl C1NumericEdit C1DateEdit ** C1DropDownControl.ShowModalButton ** Determines if the modal button is visible. [VB] Public Property ShowModalButton As Boolean [C#] public bool ShowModalButton { get; set; } Default: False Applies to: C1DropDownControl C1NumericEdit C1DateEdit ** C1TextBox.DaylightTimeAdjustment ** The value specified in the GMTOffset property can be advanced or set back due to daylight-saving time changes. [VB] Public Property DaylightTimeAdjustment As DaylightTimeAdjustmentEnum [C#] public DaylightTimeAdjustmentEnum DaylightTimeAdjustment { get; set; } Remarks: This property is applicable only if CurrentTimeZone = False. The DaylightTimeAdjustmentEnum enumeration includes: NoAdjustments - no daylight-saving time adjusments; AdvanceGMTOffsetForTheDaylightSavingTime - use this option if the GMTOffset property corresponds to the standard time offset. For the daylight-saving time GMTOffset should be advanced by an hour. SetGMTOffsetBackForTheStandardTime - use this option if the GMTOffset property is set to the daylight time offset. So, for the standard time it should be set back by an hour. Default: NoAdjustments Applies to: C1Label C1TextBox C1DropDownControl C1DateEdit ** C1NumericEdit.Calculator ** Represents the class of dropdown calculator. [VB] Public ReadOnly Property Calculator As NumericEditCalculator [C#] public NumericEditCalculator Calculator { get; } Applies to: C1NumericEdit ** NumericEditCalculator.ButtonFlatStyle ** Determines the style of the dropdown calculator buttons. [VB] Public Property ButtonFlatStyle As FlatStyle [C#] public FlatStyle ButtonFlatStyle { get; set; } Remark: To enable XP styles for the dropdown calculator set this property to FlatStyle.System. Default: FlatStyle.Standard. Applies to: NumericEditCalculator ** NumericEditCalculator.DisplayFormat ** Custom format specifier used to format the value displayed in the dropdown calculator. [VB] Public Property DisplayFormat As String [C#] public string DisplayFormat { get; set; } Default: an empty string. Applies to: NumericEditCalculator ** NumericEditCalculator.StoredFormat ** Custom format specifier used to format the stored value of the dropdown calculator. [VB] Public Property StoredFormat As String [C#] public string StoredFormat { get; set; } Default: 'F'. Applies to: NumericEditCalculator ** NumericEditCalculator.FormatOnClose ** Gets or sets whether StoredFormat should be applied to the value entered in the dropdown calculator. [VB] Public Property FormatOnClose As Boolean [C#] public bool FormatOnClose { get; set; } Default: True. Applies to: NumericEditCalculator ** NumericEditCalculator.UIStrings ** The collection of user interface strings - context menu items. [VB] Public ReadOnly Property UIStrings As UIStrings [C#] public UIStrings UIStrings { get; } Applies to: NumericEditCalculator ** NumericEditCalculator.UseStaticMemory ** Gets or sets whether Static Memory context menu should appear for the dropdown calculator. [VB] Public Property UseStaticMemory As Boolean [C#] public bool UseStaticMemory { get; set; } Remarks: The static memory is eight memory cells of type Decimal, which are shared by all instances of C1NumericEdit controls within the same application. The special context menu appears only if the ContextMenu property is not assigned by the user to some custom menu. Default: True. Applies to: NumericEditCalculator ------------------- Obsolete Properties ------------------- -- C1NumericEdit.CalculatorButtonStyle Use C1NumericEdit.Calculator.ButtonFlatStyle property instead. -- C1NumericEdit.CalculatorNumberFormat Use C1NumericEdit.Calculator.StoredFormat property instead. -- The properties ShowDropDownButton, ShowUpDownButtons, and the new property - ShowModalButton are now hidden in the property grid - the VisibleButtons property replaces them all. However, these properties can still be read/written from code. -- C1Label.FlatStyle This property has no effect in C1Label class. ------------ Added Events ------------ ** VerticalAlignChanged ** Public Event VerticalAlignChanged As EventHandler Occurs when the value of the VerticalAlign property has changed. Applies to: C1TextBox C1DropDownControl C1NumericEdit C1DateEdit ** MarginsChanged ** Public Event MarginsChanged As EventHandler Occurs when the Margins property or one of the margins has changed. Applies to: C1TextBox C1DropDownControl C1NumericEdit C1DateEdit ** ModalButtonClick ** Public Event ModalButtonClick As EventHandler Occurs when the Modal button is clicked. Applies to: C1DropDownControl C1NumericEdit C1DateEdit ---------------- Changed Behavior ---------------- -- 'C' key in the dropdown calculator now clears the content of the field. Previously, this button reset the value to zero. -- F2, F3, F4 keys are not used by default in the NumericInput mode. You can activate these keys setting the F2, F3, F4 flags in the NumericInputKeys property. -- If C1DropDownControl.RightToLeft = True, the dropdown form is aligned to the right if DropDownFormAlign = Left or Default, and left-aligned if DropDownFormAlign = Right. Previously C1DropDownControl.RightToLeft property did not affect the dropdown form alignment. ------------------ Corrected problems ------------------ -- Fixed a bug in C1DropDownControl: there was no way to display the dropdown portion of C1DropDownControl on the second monitor (in dual-monitor system) if it placed to the left from the main screen. -- Fixed a problem with setting alignment and autosizing for the dropdown form when used with big fonts (120DPI). -- Fixed a problem in C1PictureBox: with C1DataObjects data source it may occur that after setting C1PictureBox.Image property, the new image will be lost after filling another field bound to the same data source. =============================================== C1Input 1.0.20032.45 10 Apr 2003 =============================================== ------------------ Corrected problems ------------------ -- Fixed a bug introduced in the previous build 1.0.20032.44, on 04/09/2003. Control obtains value from the data source when it the control is added to the Form.Controls collection (within the InitializeComponent() method of the parent form). It causes problems because the initialization of the data source hasn't been completed at that moment. -- Fixed a bug in C1DropDownControl and its descendants, C1NumericEdit and C1DateEdit: If the control has non-default size, the value was obtained from the data source during the parent form initialization, i.e. before EndInit is called for the data source component. Now the value is obtained only when the control becomes visible. =============================================== C1Input 1.0.20032.44 09 Apr 2003 =============================================== ------------------------------------------------------------- ATTENTION: Build 44 is broken. Use build 45 or better instead ------------------------------------------------------------- ---------------- Changed Behavior ---------------- -- C1TextBox (and derived controls) in DateTimeInput mode: When current value is DBNull and the user enters the control with a mouse click, the control remains empty (previously, a non-null value was restored on a mouse click). The non-empty value appears only when the user clicks the control in focus again or starts editing its contents. -- The default value for the C1TextBox.AcceptsEscape property (introduced in build 1.0.20032.43) has been changed from False to True. ------------------- Obsolete Properties ------------------- -- C1TextBox.LastValueBeforeNull - Previously determined the non-null value restored to a control in DateTimeInput mode when a control containing DbNull entered edit mode. Now, when the user starts editing in a control containing DbNull in DateTimeMode, the initial value is either current date/time or DateTime.MinValue, depending on DateTimeStyleFlags.NoCurrentDateDefault. ------------------ Corrected problems ------------------ -- Fixed a bug in editing a date in DateTimeInput mode. If the previous date value belonged to daylight saving time and the new date value does not, or vice versa, there was a one-hour shift in the newly entered date value. =============================================== C1Input 1.0.20032.43 04 Apr 2003 =============================================== ---------- What's New ---------- -- Property AcceptsTab, inherited from TextBox, is now exposed in c1DateEdit/C1NumericEdit (previously, it was hidden). In C1TextBox (and in derived controls) this property now works differently from the standard TextBox.AcceptsTab (which only has sense for a multiline tex box). If AcceptsTab = True, Tab and Shift+Tab keys move the focused position within the edit mask or in DateTimeInput mode between groups of input characters. When the last group is reached, the following Tab moves the input focus to the next control in the tab order. -- Added AcceptsEscape property to C1TextBox and its descendants. ---------------- Added properties ---------------- ** AcceptsEscape ** Indicates if the Escape key that cancels modified value is handled by the control without passing it to the owner form (AcceptsEscape=True), or it is then passed to the form and can close it if the form has CancelButton (AcceptsEscape=False). [VB] Public Property AcceptsEscape As Boolean [C#] public bool AcceptsEscape { get; set; } Remarks: When this property is False and the owner form has non-empty CancelButton property, pressing Escape key will reset the content of C1TextBox and, immediately after that, the form will be closed with the Cancel button. If AcceptsEscape = True and the value of the control has been changed (Modified = True), pressing Escape key will reset the value, but the owner form will stay open. If the user presses Escape second time, the form is closed. Default: False in build 1.0.20032.43 [changed to True in build 1.0.20032.44] Applies to: C1DateEdit C1DropDownControl C1NumericEdit C1TextBox ------------------ Corrected problems ------------------ -- In C1TextBox and derived controls, the Escape key did not reset the value if the owner form has not-null value of the CancelButton property. So, if the current content of the C1TextBox is invalid when the user presses Escape, a message box appeared saying the control can't lose the input focus, effectively disallowing the user to use Escape to close the form cancelling the changes. Now this behavior has been changed (corrected): Escape always cancels the change, and a new property AcceptsEscapes determines whether it also closes the form. -- Changed Escape key handling in C1NumericEdit: If the drop down calculator is open, pressing Escape restores the value that was in the control before opening the calculator. The second Escape restores the original value of the field (value before editing). -- Ctrl-C, Ctrl-V and Ctrl-X keys did not work in edit mask, NumericInput, and DateTimeInput modes. -- First literal following white space was not properly handled when SkipOptional=True and the user pressed a key to step to the next section of the edit mask. If the next literal after optional characters is a blank, and the user types the character that follows the blank(s), input focus should skip post this literal group. Previously, the user had to type the blank explicitly to skip such literal group. -- Fixed a minor edit mask bug: Pressing Backspace after first entered character (when the user typed only that first character), all contents should be deleted. But, if ShowLiterals = WhenNextStarted, first literal character was not deleted. =============================================== C1Input 1.0.20032.42 07 Mar 2003 =============================================== ------------------ Corrected problems ------------------ -- In C1DateEdit control, Today and Clear buttons in dropdown calendar were not visible if large fonts (120DPI) are used on the user machine. -- The decimal point key pressed on numeric keyboard now enters culture specific decimal separator. Previously it was ignored unless current decimal separator is ".". This change affects numeric edit mode and dropdown calculator in C1TextBox and C1NumericEdit controls. =============================================== C1Input 1.0.20031.41 28 Feb 2003 =============================================== ------------------------- Changed class inheritance ------------------------- -- Classes FormatInfo, ParseInfo, MaskInfo, PreValidation, PostValidation now inherit from the MarshalByRefObject class, instead of Object. -- Exception classes ValidationException and DataSourceException now inherit from the ApplicationException class, instead of Exception. ------------- Added Methods ------------- ** PlaceholderCollection.Add ** Adds a new special character to the collection. [VB] Public Sub Add(cph As CustomPlaceholder) [C#] public void Add(CustomPlaceholder cph) Parameter Description CustomPlaceholder cph The CustomPlaceholder to add. ** PlaceholderCollection.Insert ** Inserts a new special character to the collection at the specified position. [VB] Public Sub Insert(index As Integer, cph As CustomPlaceholder) [C#] public void Insert(int index, CustomPlaceholder cph) Parameter Description index The zero-based index at which CustomPlaceholder should be inserted. CustomPlaceholder cph The CustomPlaceholder to insert. ** PlaceholderCollection.CopyTo ** Copies elements of the collection to an array starting at a particular array index. [VB] Public Sub CopyTo(array As CustomPlaceholder(), index As Integer) [C#] public void CopyTo(CustomPlaceholder[] array, int index) Parameter Description CustomPlaceholder[] array The one-array that is the destination of the elements copied from the collection. The array must have zero-based indexing. int index The zero-based index in array at which copying begins. ** PlaceholderCollection.Remove ** Removes a specific character from the collection. [VB] Public Sub Remove(placeholder As Char) [C#] public void Remove(char placeholder) Parameter Description char placeholder The character to remove from the collection. ** ValueIntervalCollection.Add ** Adds a new value interval to the collection. [VB] Public Sub Add(vi As ValueInterval) [C#] public void Add(ValueInterval vi) Parameter Description ValueInterval vi The ValueInterval to add. ** ValueIntervalCollection.Insert ** Inserts a new value interval to the collection at the specified position. [VB] Public Sub Insert(index As Integer, vi As ValueInterval) [C#] public void Insert(int index, ValueInterval vi) Parameter Description index The zero-based index at which ValueInterval should be inserted. ValueInterval vi The ValueInterval to insert. ** ValueIntervalCollection.CopyTo ** Copies elements of the collection to an array starting at a particular array index. [VB] Public Sub CopyTo(array As ValueInterval(), index As Integer) [C#] public void CopyTo(ValueInterval[] array, int index) Parameter Description ValueInterval[] array The one-array that is the destination of the elements copied from the collection. The array must have zero-based indexing. int index The zero-based index in array at which copying begins. ** ValueIntervalCollection.IndexOf ** Determines the index of a specific value interval in the collection, return -1 if this item not found. [VB] Public Function IndexOf(vi As ValueInterval) As Integer [C#] public int IndexOf(ValueInterval vi) Parameter Description ValueInterval vi The ValueInterval to locate in the collection. ** ValueIntervalCollection.Contains ** Returns True if the collection contains the specific value interval, False otherwise. [VB] Public Function Contains(vi As ValueInterval) As Boolean [C#] public bool Contains(ValueInterval vi) Parameter Description ValueInterval vi The ValueInterval to locate in the collection. ** ValueIntervalCollection.Remove ** Removes a specific value interval from the collection. [VB] Public Sub Remove(vi As ValueInterval) [C#] public void Remove(ValueInterval vi) Parameter Description ValueInterval vi The ValueInterval to remove from the collection. ------------------ Corrected problems ------------------ -- C1DropDownControl: Events OwnerControlTextChanged and OwnerControlValueChanged were fired in the DropDownForm class even when the dropdown form is hidden. Now these event are fired only if the DropDownForm is open (dropped down). -- Fixed a problem with inherited forms (resulting from a Visual Studio bug): saving an inherited form with a C1TextBox or one of its decendents, VS.NET form designer generated an assignment for the read-only property TextLength, causing compilation error. -- In dropdown calculator in C1NumericEdit, shortcut Ctrl-M for the MS key did not work. -- C1DropDownControl with BorderStyle=FixedSingle always had black border instead of using system color SystemColors.WindowFrame. -- Minor problem in MaskInfo class: MaskInfo.GetContent() method returned wrong value if the current control text does not conform to the edit mask. =============================================== C1Input 1.0.20031.40 11 Feb 2003 =============================================== ===================== What's New ===================== -- New property C1NumericEdit.CalculatorNumberFormat. -- New property ButtonCursor. ---------------- Added Properties ---------------- ** C1NumericEdit.CalculatorNumberFormat ** Custom format specifier used when dropdown calculator is open. [VB] Public Property CalculatorNumberFormat As String [C#] public string CalculatorNumberFormat { get; set; } Remarks: This property specifies the number format to be used with open dropdown calculator. It works as the CustomFormat property, but only while the calculator is open. By default, it is set to "f" (fixed-point number). Setting this property, you can use more specific formatting, for example, specify precision: "f4","#####.####", etc. If this property is set to an empty string, the number produced by the calculator is not formatted, it is formatted when the calculator is closed. That can cause an error if the number entered in the calculator does not conform to the control's data type, for example, if it contains exponent. Applies to: C1NumericEdit ** ButtonCursor ** The cursor that is displayed when the mouse is over a button. [VB] Public Property ButtonCursor As System.Windows.Forms.Cursor [C#] public System.Windows.Forms.Cursor ButtonCursor { get; set; } Remarks: This property is useful when you set the control's Cursor property and want the cursor to have a different shape when the mouse is over a button. Applies to: C1DateEdit C1DbNavigator C1DropDownControl C1NumericEdit ------------ Added Events ------------ ** ButtonCursorChanged ** Public Event ButtonCursorChanged As EventHandler Event fired when the value of ButtonCursor property is changed. Applies to: C1DateEdit C1DbNavigator C1DropDownControl C1NumericEdit ------------------ Corrected problems ------------------ -- In NumericInput mode, the user was unable to clear the control by selecting all text and choosing Delete from the context menu. -- Dropdown calendar and dropdown calculator were displayed at a wrong location if the control is close to the bottom of the screen. -- The Cursor property did not have effect when the mouse pointer is on the control's border. It caused mouse cursor to change momentarily to the default cursor and back when the mouse passes over control border. -- Problems using C1DateEdit, C1NumericEdit and C1DropDownControl controls inside a C1DropDownControl, in the DropDownForm-based form displayed by the C1DropDownControl (in a "nested dropdown" situation). In particular, using C1NumericEdit or C1DropDownControl in a dropdown form caused an unhandled exception if Focusable flag is not set in the form's DropDownForm.Options. =============================================== C1Input 1.0.20031.39 24 Jan 2003 =============================================== ===================== What's New ===================== -- Added new sample InheritedDropDown. ---------------- Added Properties ---------------- ** C1DropDownControl.DropDownFormAlign ** Alignment of the dropdown form relative to the control. [VB] Public Property DropDownFormAlign As DropDownFormAlignmentEnum [C#] public DropDownFormAlignmentEnum DropDownFormAlign { get; set; } Remarks: If this property is set to Default, the form's DropDownForm.DropDownAlign property is used. Applies to: C1DropDownControl ------------------ Changed Properties ------------------ ** C1DropDownControl.DropDownForm ** Used to be read-only. The user was unable to attach an existent form to the control at run time. Now this property is read/write and virtual: public virtual DropDownForm DropDownForm { get; set; } ------------------- Obsolete Properties ------------------- C1DropDownControl.DropDownAlign - replaced with C1DropDownControl.DropDownFormAlign ------------ Added Events ------------ ** DropDownFormAlignChanged ** Public Event DropDownFormAlignChanged As EventHandler Occurs when the value of the DropDownFormAlign property has changed. Applies to: C1DropDownControl --------------- Obsolete Events --------------- C1DropDownControl.DropDownAlignChanged - replaced with C1DropDownControl.DropDownFormAlignChanged ------------------ Corrected problems ------------------ -- KeyDown and KeyPress events were fired after processing the key by the control (its edit mask, DateTimeInput and NumericInput modes). Now these events fire before any processing. -- In C1NumericEdit, if the user specifies pre- or post- validation conditions, the up-down buttons can still change the value beyond the allowable bounds. =============================================== C1Input 1.0.20031.38 14 Jan 2003 =============================================== ===================== What's New ===================== -- Added events BindingFormatting/BindingParsing for binding to fields with DataType different from the control's DataType, and for modifying value before it is sent to/from the control. -- New sample FormattingInBinding. -- Added UIStrings property to DateEditMonthCalendar (used in C1DateEdit.Calendar) for customizating and localizating strings shown in the calendar ("Today" and "Clear" button captions). -- Added methods for retrieving/setting Image in C1PictureBox: ImageToByteArray, ImageFromByteArray, CopyImage, PasteImage. -- Added properties for customizing C1DbNavigator buttons and appearance, including images and texts appearing on the buttons: BorderStyle, ButtonSize, ButtonTextAlign, HorizontalIndent, VerticalIndent, VerticalAlign, ButtonTexts, ButtonToolTips, UIStrings, ImageList, ImageListHighlight. -- Added property C1DbNavigator.PageSize. -- Added event C1PictureBox.ImageChanged. -- C1Input now requires reference to C1.Common.dll. Reference to C1.Common has been added to all samples and tutorials. ---------------- Added Properties ---------------- ** DateEditMonthCalendar.UIStrings ** Gets the collection of user interface strings used in the calendar. [VB] Public ReadOnly Property Captions As UIString [C#] public UIStrings Captions {get;} Remarks: Use this property to customize or localize the strings shown to the end user. It contains button caption strings: "Today" and "Clear". Applies to: DateEditMonthCalendar ** C1DbNavigator.BorderStyle ** Navigator border style. [VB] Public Property BorderStyle As System.Windows.Forms.BorderStyle [C#] public System.Windows.Forms.BorderStyle BorderStyle {get; set;} Applies to: C1DbNavigator ** C1DbNavigator.ButtonSize ** The size of navigator buttons. [VB] Public Property ButtonSize As Size [C#] public Size ButtonSize {get; set;} Remarks: This property has effect only if ButtonStyle = Standard. If ButtonStyle = Flat, this property is ignored and button size is always determined automatically. Applies to: C1DbNavigator ** C1DbNavigator.ButtonTextAlign ** Controls how the text is positioned relative to the image in navigator buttons. [VB] Public Property ButtonTextAlign As NavigatorButtonTextAlignEnum [C#] public NavigatorButtonTextAlignEnum ButtonTextAlign {get; set;} Applies to: C1DbNavigator ** C1DbNavigator.HorizontalIndent ** Horizontal margin between the border and the buttons. [VB] Public Property HorizontalIndent As Integer [C#] public int HorizontalIndent {get; set;} Remarks: All contents of a navigator control appear inside the margins, including the buttons and the "Row:" text. Applies to: C1DbNavigator ** C1DbNavigator.VerticalAlign ** Vertical alignment of navigator buttons. [VB] Public Property VerticalAlign As NavigatorVerticalAlignEnum [C#] public NavigatorVerticalAlignEnum VerticalAlign {get; set;} Applies to: C1DbNavigator ** C1DbNavigator.VerticalIndent ** Vertical margin between the border and the buttons. [VB] Public Property VerticalIndent As Integer [C#] public int VerticalIndent {get; set;} Remarks: Buttons are indented from the top, bottom or center, according to the value of the VerticalAlign property. Applies to: C1DbNavigator ** C1DbNavigator.ButtonTexts ** Gets or sets the texts displayed on the buttons. [VB] Public ReadOnly Property ButtonTexts As UIStrings [C#] public UIStrings ButtonTexts {get;} Remarks: All button text strings are empty by default, only images appear on the buttons. Applies to: C1DbNavigator ** C1DbNavigator.ButtonToolTips ** The string collection defining navigator button tooltips. [VB] Public ReadOnly Property ButtonToolTips As UIStrings [C#] public UIStrings ButtonToolTips {get;} Remarks: Use this property to customize or localize the strings shown as button tooltips. Applies to: C1DbNavigator ** C1DbNavigator.UIStrings ** Gets the collection of user interface strings. [VB] Public ReadOnly Property UIStrings As UIStrings [C#] public UIStrings UIStrings {get;} Remarks: Use this property to customize or localize the strings shown in the control. Applies to: C1DbNavigator ** C1DbNavigator.ImageList ** Gets or sets the ImageList to use when displaying button images without highlighting. [VB] Public Property ImageList As System.Windows.Form.ImageList [C#] public System.Windows.Form.ImageList ImageList {get; set;} Remarks: This property specifies the images shown on the buttons when they are not in highligted state (ColorButtons = False and the mouse is not over the button, if ColorWhenHover = True). If this property is set to null (default), default images are used. Related topics: ImageListHighlight. Applies to: C1DbNavigator ** C1DbNavigator.ImageListHighlight ** Gets or sets the ImageList to use when displaying button images in highlighted state. [VB] Public Property ImageListHighlight As System.Windows.Form.ImageList [C#] public System.Windows.Form.ImageList ImageListHighlight {get; set;} Remarks: This property specifies the images shown on the buttons when they are in highligted state (ColorButtons = True or the mouse is over the button and ColorWhenHover = True). If this property is set to null (default), the ImageList property is used. Related topics: ImageList. Applies to: C1DbNavigator ** C1DbNavigator.PageSize ** Number of rows to skip when the user presses PageUp/Down [VB] Public Property PageSize As Integer [C#] public int PageSize {get; set;} Remarks: Default: 10. Applies to: C1DbNavigator ------------------- Obsolete properties ------------------- C1DbNavigator.Captions - replaced with C1DbNavigator.UIStrings C1DbNavigator.ToolTips - replaced with C1DbNavigator.ButtonTooltips ------------- Added Methods ------------- ** C1PictureBox.ImageToByteArray ** Returns the contents of an image. [VB] Public Shared Function ImageToByteArray(image As System.Drawing.Image, format As System.Drawing.Imaging.ImageFormat) As Byte() [C#] public static byte[] ImageToByteArray(System.Drawing.Image image, System.Drawing.Imaging.ImageFormat format) Parameter Description Image image Image to return as a byte array. To return the image currently in a C1PictureBox control, use the C1PictureBox.Image property. ImageFormat format Format in which to return the image contents. ** C1PictureBox.ImageFromByteArray ** Converts a byte array to an image. [VB] Public Shared Function ImageFromByteArray(buffer As Byte()) As System.Drawing.Image [C#] public static byte[] ImageFromByteArray(byte[] buffer) Parameter Description byte[] buffer The contents of an image. To put the resulting image into a C1PictureBox control, set the C1PictureBox.Image property to the result of this method. ** C1PictureBox.CopyImage ** Copies the image currently in the control to the clipboard. [VB] Public Sub CopyImage() [C#] public void CopyImage() Remarks: If the Image property is DbNull, this method does nothing. ** C1PictureBox.PasteImage ** If the clipboard contains an image, this method replaces the contents of the Image property of the control with that image. [VB] Public Sub PasteImage() [C#] public void PasteImage() ** C1DbNavigator.SetDataBinding ** Sets the DataSource and DataMember properties at run time. [VB] Public Sub SetDataBinding(object dataSource, string dataMember) [C#] public void SetDataBinding(object dataSource, string dataMember) Parameter Description dataSource The data source object to which the control is bound. dataMember For multi-table data sources, specifies a specific table to which the control is bound. ------------ Added Events ------------ ** BindingFormatting ** Public Event BindingFormatting As ConvertEventHandler Occurs when Value is retrieved from the data source. Remarks: This event can be used to change the type and value of the Value property when it is received from a data source field. For example, to bind a control to a data field whose type is different from the control's DataType, use this event (and BindingParsing, if the control is not read-only) to convert the type. You can also use this event to change the value before it is sent to the control. To convert the value to a different type, or to change the value sent to the control, set the e.Value argument of the event. Argument e.DesiredType is set to the value of the control's DataType property (for C1PictureBox, it is always System.Drawing.Image). Related topics: BindingParsing. Applies to: C1DateEdit C1Label C1NumericEdit C1PictureBox C1TextBox ** BindingParsing ** Public Event BindingParsing As ConvertEventHandler Occurs when Value is stored in the data source. Remarks: This event can be used to change the type and value of the Value property when it is sent to the data source after being modified by the user. For example, to bind a control to a data field whose type is different from the control's DataType, use this event and BindingFormatting. To convert the value to a different type, or to change the value sent to the data source, set the e.Value argument of the event. Argument e.DesiredType is set to the type of the field the control is bound to. For an unbound control, it is set to Object. Related topics: BindingFormatting. Applies to: C1DateEdit C1NumericEdit C1PictureBox C1TextBox ** ImageChanged ** Public Event ImageChanged As EventHandler Occurs when the Image changes. Applies to: C1PictureBox ------------------ Added Enumerations ------------------ ** NavigatorVerticalAlignEnum Enumeration ** Specifies vertical alignment for buttons in C1DbNavigator control. Top Buttons are aligned with the top of the control. Middle Buttons are aligned with the center of the control. Bottom Buttons are aligned with the bottom of the control. ** NavigatorButtonTextAlignEnum Enumeration ** Specifies text position for C1DbNavigator buttons. Right Text appears to the right of the image. Underneath Text appears underneath the image. ------ UIStrings Class ------ A collection of user interface strings that can be localized (customized) at design time and at run time. System.Object C1.Util.UIStrings == Properties == ** Item ** Gets or sets the string shown to the end user. The string is indexed by a key. For example, the default value for this string can be used as the string's key. [VB] Public Property Default Item As String(key As Object) [C#] public string this[object key] { get; set; } ------------------ Corrected problems ------------------ -- In C1DbNavigator, if a message box is opened while autorepeat is active (Next or Previous is performed repeatedly because mouse button is held over the navigator button), autorepeat would not be canceled. Now autoprepeat is canceled, and it is also paused while the mouse is not over the pressed button. -- The list of forms displayed by the C1DropDownControl.DropDownFormClassName property did not include forms located in folders in the project. -- If a C1NumericEdit control has an edit mask with optional positions, such as "!9990.^00", the user was unable to skip some positions using dropdown calculator. -- C1NumericEdit.UpDownButtonClick event fired only once if the user presses and holds Up/Down button. -- No proper error handling when the date selected in a C1DateEdit control's dropdown calendar doesn't match the edit mask specified for the control. Now the control reacts in accordance with its ErrorInfo settings (in this case, ErrorAction setting is ignored, ErrorInfo.ErrorAction is assumed to be ErrorActionEnum.ResetValue). =============================================== C1Input 1.0.20031.36 10 Dec 2002 =============================================== ===================== What's New ===================== -- Added FormatError event. ------------ Added Events ------------ ** FormatError ** Public Event FormatError As FormatErrorEventHandler Error occured while formatting the stored value. Remarks: This event occurs when the control receives data that cannot be formated according to the current format and edit mask settings. For example, if CustomFormat contains two digits and the received Value is a three- digit number. FormatError is not called when the error is made by the end user typing in the control, in that case ValidateError is called. FormatError occurs when the control cannot format value for display. If ErrorInfo.ErrorProvider property (or C1Label.ErrorProvider in C1Label control) is set to an ErrorProvider component, C1Input uses that ErrorProvider component to signal errors after firing the FormatError event. The error description shown as ErrorProvider tooltip can be customized in FormatError code by setting the ErrorMessage event argument. Applies to: C1TextBox C1NumericEdit C1DateEdit See also: Incorrect format in displaying data --------------------------- Added Event Handler Classes --------------------------- *** FormatErrorEventHandler Delegate *** public delegate void FormatErrorEventHandler(object sender, FormatErrorEventArgs e); Arguments: sender The source of the event e A FormatErrorEventArgs object that contains the event data. Applies to: BeforeAction ---------------------------- Added Event Argument Classes ---------------------------- *** FormatErrorEventArgs *** Public Class FormatErrorEventArgs Members: object Value Source value for formatting. FormatTargetEnum Target Formatting target (ForEdit or ForDisplay). FormatInfo FormatInfo FormatInfo object that fired the event. string Text The text to show in the control. Your code in FormatError event can set this argument to a text you want to show in the control in case of a formatting error. string ErrorMessage Error description shown as the tooltip in the ErrorProvider icon, if ErrorInfo.ErrorProvider property is set (C1Label.ErrorProvider in C1Label control). Your code in FormatError event can change this argument to customize error description. =============================================== C1Input 1.0.20031.35 06 Dec 2002 =============================================== ===================== What's New ===================== -- Added NumericInput mode facilitating editing numeric data. -- Enhanced edit mask behavior with new features and properties. -- In DateTimeInput mode, when the user completely fills a field or types separator character, control automatically moves to the next field. -- Enhanced error handling using new ErrorProvider properties in ErrorInfo, C1Label and C1DbNavigator. -- Changed Tutorial 2 to demonstrate new edit mask functionality. -- Added Tutorial 9 for numeric input mode. ------------------------------------------------------------------------ Changes to the edit mask character table (see table in "Using the C1Input Controls. Edit Mask") ------------------------------------------------------------------------ New characters: ! - Causes the optional characters that follow in the edit mask to display from right to left, rather than from left to right. So, blanks appear on the left. ^ - Turns off the previous ! character. After ^, blanks appear on the right. " - All characters in a string enclosed in double quotes are considered literals. Changes: & - Character placeholder (entry required). Any character is permitted. C - Character or space placeholder (entry optional). Any character is permitted. ---------------- Added Properties ---------------- ** C1TextBox.NumericInput ** Sets or gets a value indicating whether a special edit mode is used for numeric values. [VB] Public Property NumericInput As Boolean [C#] public boolean NumericInput {get; set;} When this property is set to True (default) and DataType is a numeric type, numeric value is edited in a special calculator-like mode. It accepts only digits, +/-, arrow keys, and, if data type and format allow, decimal point and exponent. Other characters, such as letters, are ignored. There are also special functional keys recoginzed in NumericInput mode: F9 (change sign), F2 (negative infinity), F3 (positive infinity), F4 (NaN, "not a number"). Applies to: C1NumericEdit C1TextBox ** C1TextBox.CopyWithLiterals ** Used with numeric input mode and edit mask. If True, text in the clipboard includes literals. [VB] Public Property CopyWithLiterals As Boolean [C#] public boolean CopyWithLiterals {get; set;} When control text is copied to the clipboard while the control is in NumericInput mode or its edit mask is active, setting CopyWithLiterals = False excludes literals from the clipboard text. If CopyWithLiterals = True (default), the text is copied with literals included. MaskInfo.CopyWithLiterals property uses the control's CopyWithLiterals property as its default value and can override it. Applies to: C1DateEdit C1NumericEdit C1TextBox ** C1MaskInfo.CopyWithLiterals ** Used with numeric input mode and edit mask. If True, text in the clipboard includes literals. [VB] Public Property CopyWithLiterals As Boolean [C#] public boolean CopyWithLiterals {get; set;} When control text is copied to the clipboard while its edit mask is active, setting CopyWithLiterals = False excludes literals from the clipboard text. If CopyWithLiterals = True (default), the text is copied with literals included. ** CustomPlaceholder.Optional ** True if character is optional and can be omitted. [VB] Public Property Optional As Boolean [C#] public boolean Optional {get; set;} This property is used by edit mask and wildcard-based pre-validation. If Optional = True, the user can leave this placeholder blank in the edit mask and omit it in a string validated with a wildcard pattern. ** C1DbNavigator.ErrorProvider ** Gets or sets an ErrorProvider object used to indicate error state of the current data row. [VB] Public Property ErrorProvider As System.Windows.Forms.ErrorProvider [C#] public System.Windows.Forms.ErrorProvider ErrorProvider {get; set;} If this property is set, and current row has an error (RowError property is set in ADO.NET or C1DataObjects), the navigator control indicates the error using the icon defined in the specified error provider. ** ErrorInfo.ErrorProvider, C1Label.ErrorProvider ** Gets or sets an ErrorProvider object used to indicate error state of the control. [VB] Public Property ErrorProvider As System.Windows.Forms.ErrorProvider [C#] public System.Windows.Forms.ErrorProvider ErrorProvider {get; set;} If this property is set, the specified error provider is used to signal error conditions occuring in the control (ErrorProvider.SetControl method is used to show errors in the error provider). Following error conditions are shown: - Parsing or validating the value entered by the user fails. - Value obtained from the database does not conform to the edit mask. - An exception occurs formatting the value obtained from the database. - Formatting the text obtained from the database is done in the Formatting event, and fails (Formatting event returns Succeeded = False). Applies to: C1Label ErrorInfo ** FormatEventArgs.ErrorMessage ** Member Description string ErrorMessage The out parameter for specifying error description if Succeeded is set to False. ** MaskInfo.SkipOptional ** If True (default), optional mask positions are automatically skipped until the first position allowing the typed character. [VB] Public Property SkipOptional As Boolean [C#] public boolean SkipOptional {get; set;} This property, True by default, enables the following edit mask functionality: If the caret is positioned on an optional character, and the user types a character that is not allowed on this position, then C1Input looks ahead for the first position allowing this character. If such position is found and there are only optional positions between it and the current position, then the caret skips the optional positions, leaves them blank, and the typed character appears on the found position. With numbers, SkipOptional is usually applied in conjunction with '!' and '^' mask characters controlling the alignment of blanks to the right or left. Blanks before decimal point are usually aligned to the left, and blanks after decimal point - to the right. However, using special characters '!' and '^' is not mandatory, parsing of the input text will work correctly regardless of the blank alignment. For example, consider an edit mask !990.^9999?#9. Suppose the user wants types 1.23e-4. If SkipOptional = True, the user can simply type these characters without using arrow keys to move the caret. Here is how the input looks, step by step: enter control ¦__._______ press '1' 1¦_._______ press '.' __1.¦______ press '2' __1.2¦_____ press '3' __1.23¦____ press 'e' __1.23__e¦_ press '-' __1.23__e-¦ press '4' __1.23__e-4¦ leave control 1.23e-4 ** MaskInfo.SaveBlanks ** If True, the stored text includes blank positions as StoredEmptyChar. [VB] Public Property SaveBlanks As Boolean [C#] public boolean SaveBlanks {get; set;} This property, together with SaveLiterals and StoredEmptyChar, determines how the text entered by the used is saved in the database. For example, consider input string "2__.15_e+6__" where '.' and 'e' are mask literals and '_' indicates a blank position (left empty by the user): SaveLiterals = True, SaveBlanks = False (default) Input string is saved with literals but omitting the blanks: "2.15e+6". Caution: literals following the last entered position are not stored with this option. For example, input string "2__.15_e____" will be stored as "2.15". SaveLiterals = False, SaveBlanks = True Literals are excluded while the blank positions are present. Each position containing PromptChar (those positions are considered blank) is replaced with StoredEmptyChar. For example, if PromptChar = '_', StoredEmptyChar = '*', the following string is stored: "2**15*+6**". SaveLiterals = True, SaveBlanks = True This is a compatibility option behaving as the old version of C1Input, version 1.0.20024. Both literals and blanks are stored. Each position containing PromptChar (those positions are considered blank) is replaced with StoredEmptyChar. For example, if PromptChar = '_', StoredEmptyChar = '*', the following string is stored: "2**.15*e+6**". SaveLiterals = False, SaveBlanks = False Both literals and blanks are omitted: "215+6". Caution: using this option can cause losing information, so showing the stored string in the control again can sometimes produce unexpected results. ** MaskInfo.StoredEmptyChar ** Character stored in empty mask positions. [VB] Public Property StoredEmptyChar As Char [C#] public char StoredEmptyChar {get; set;} This property specifies the character stored in blank mask positions (positions left empty by the user) if SaveBlanks = True. Default: '_'. ** MaskInfo.EffectiveText ** Text in a readable format, with literals and without blanks. [VB] Public Property EffectiveText As String [C#] public string EffectiveText {get; set;} This run-time only property allows the programmer to get or set the text in a control with edit mask in readable format, with literals and without blanks. This is the text as it will appear when the control will lose input focus. ------------------ Removed Properties ------------------ ** MaskInfo.TrimEnd ** ** ReplacePromptWithSpace ** ** LiteralsRequired ** ---------------- Added Methods ---------------- ** MaskInfo.GetDisplayText ** Returns a string formatted for display using edit mask. [VB] Public Function GetDisplayText(content As String, skipBlanks As Boolean) As String [C#] public string GetDisplayText(string content, bool skipBlanks) Parameter Description string content String containing characters entered by the user, including those on optional positions that were left blank (skipped). Blank characters should be represented by StoredEmptyChar. The content can be obtained using MaskInfo.GetContent method. bool skipBlanks If set to True, the result will omit blank positions. If set to False, the resulting text will contain PromptChar on blank positions (unless ShowLiterals=FreeFormatEntry, in which case this parameter is always considered True). ** MaskInfo.GetStoredText ** Returns the string that will be stored in the database, in accordance with current values of SaveLiterals, SaveBlanks and StoredEmptyChar properties. [VB] Public Function GetStoredText(content As String) As String [C#] public string GetStoredText(string content) Parameter Description string content String containing characters entered by the user, including those on optional positions that were left blank (skipped). Blank characters should be represented by StoredEmptyChar. The content can be obtained using MaskInfo.GetContent method. ** MaskInfo.GetContent ** Returns the string containing characters entered by the user, including those on optional positions that were left blank (skipped). [VB] Public Function GetContent(text As String, textContainsLiterals As Boolean, textContainsBlanks As Boolean, ByVal blankChar As Char) As String [C#] public string GetContent(string text, bool textContainsLiterals, bool textContainsBlanks, char blankChar) This method parses the text argument, strips the literals and returns a string containing the characters entered or left blank by the user. Blank characters are represented by StoredEmptyChar. This method performs the same function as the MaskInfo.Content property, but the text for parsing can be arbitrary text, not necessarily the text in the control. Parameter Description string text Text to parse. bool textContainsLiterals Same as MaskInfo.SaveLiterals property. bool textContainsBlanks Same as MaskInfo.SaveBlanks property. char blankChar Same as MaskInfo.StoredEmptyChar ** C1TextBox.SuspendNumericInput ** This method temporarily disables numeric input mode (see NumericInput property). It can be useful for custom dropdown forms used with C1DropDown control, For example, you may need this method if you implement a custom dropdown calculator. The current value of a calculator does not necessarily conform to the format assigned to the control's FormatType/CustomFormat properties. While a calculator is open, the user expects to see the exact value produced by the calculator, not the formatted value, which can have less precision. To ensure this, you call SuspendNumericInput(true, true) when your calculator opens. The value will be parsed when the calculator is closed, at which point you call SuspendNumericInput(false, true). [VB] Public Sub SuspendNumericInput(suspend As Boolean, updateValue As Boolean) [C#] public void SuspendNumericInput(bool suspend, bool updateValue) Parameter Description bool suspend True to suspend numeric input, False to resume it. bool updateValue If True, control's Value is updated, obtained from the current control text. Both during numeric input and while it is suspended, control's Value does not reflect the current control text, Value gets updated only when the control loses focus. Therefore, suspending numeric mode and resuming it, you usually need to update the Value property with the current control text, so it can be used by a dropdown (when suspending) and by the control in numeric input mode (when resuming). Passing False in this argument provides for ignoring the current control text and using the previous Value (ignoring changes made in numeric input mode when suspending; ignoring the changes made in dropdown when resuming. ------------------ Removed Methods ------------------ ** MaskInfo.FormatStoredContent ** ================== Corrected problems ================== -- if DropDownForm contains a combobox, the dropdown form closes when the user selects an item from the combobox's dropdown list using the mouse. -- When the value entered in C1NumericInput dropdown calculator does not satisfy pre-validation conditions, an error message is displayed more than once. -- C1TextBox.PreValidating event handler was never called when PreValidation.PatternString property is empty. -- For a C1TextBox or inherited control in edit mode, when its text has been changed, and then its Value property requested, Esc key was no longer resetting the text to its original before editing state. -- C1Input controls were not localizable. Now you can set Form.Localizable property to True and then localize C1Input controls for different languages. -- C1TextBox.ValueChanged event sometimes fired when the Value property was not changed. -- Dropdown would not open on the secondary monitor in a system with two monitors. The dropdown calendar and dropdown calculator were always displayed on the primary monitor. =============================================== C1Input 1.0.20024.32 14 Sep 2002 =============================================== ===================== What's New ===================== -- Added C1DbNavigator.CausesFormValidation property. -- Added BeforeAction event to C1DbNavigator. Events C1DbNavigator.Adding and C1DbNavigator.Deleting, although still supported for backward compatibility, are now deprecated and should be removed from documentation. Also remove their argument and delegate classes: NavigatorAddingEventHandler, NavigatorAddingEventArgs, NavigatorDeletingEventHandler, NavigatorDeletingEventArgs. Instead, add argument and delegate classes for BeforeAction event: NavigatorBeforeActionEventHandler, NavigatorBeforeActionEventArgs. -- Added method: C1TextBox.SetProposedValue. -- Added public class: DataSourceException; new option in ErrorReasonEnum: DataSourceError; new property ErrorInfo.InnerException. ---------------- Added Properties ---------------- ** C1DbNavigator.CausesFormValidation ** Whether the control in focus should be validated before a button click is handled by the navigator. [VB] Public Property CausesFormValidation As Boolean [C#] public bool CausesFormValidation {get; set;} ** ErrorInfo.InnerException ** Run-time-only read-only property returning the original exception object that caused the error. [VB] Public ReadOnly Property InnerException As Exception [C#] public Exception InnerException {get;} ---------------- Added Methods ---------------- ** C1TextBox.SetProposedValue ** This method works exactly as setting the Value property, except that it does not change the internal variable storing the value before editing, so the user can press Esc and restore the previous value. This method works only in edit mode. If the control is not in edit mode, this methods does nothing. [VB] Public Sub SetProposedValue (value As Object) [C#] public void SetProposedValue (object value) Remarks: This method is mainly used in a custom drop-down form, when your code changes the value of the control according to the selection or editing done by the end user in the dropdown form. You can set the Value property there, but that has a drawback that after Value is set the user cannot revert to the previous values pressing the Esc key. If you use the SetProposedValue instead, then the current value changes, but the previous values is not affected, so the user can still revert to the previous value with Esc key, as long as the control is still in edit mode. Applies to: C1DateEdit C1NumericEdit C1TextBox ------------ Added Events ------------ ** BeforeAction ** Public Event BeforeAction As NavigatorBeforeActionEventHandler Occurs when a button is clicked, before the action is executed. Remarks: You can make the navigator control skip the standard action associated with the button by setting the Cancel argument to True in your event handler code. Applies to: C1DbNavigator --------------------------- Added Event Handler Classes --------------------------- *** NavigatorBeforeActionEventHandler Delegate *** public delegate void NavigatorBeforeActionEventHandler(object sender, NavigatorBeforeActionEventArgs e); Arguments: sender The source of the event e A NavigatorBeforeActionEventArgs object that contains the event data. Applies to: BeforeAction ---------------------------- Added Event Argument Classes ---------------------------- *** NavigatorBeforeActionEventArgs *** Public Class NavigatorBeforeActionEventArgs Members: NavigatorButtonEnum Button The clicked button. int Index Current row index in the data source (only for Delete and Edit buttons). bool Cancel This argument is False by default. If you set it to True in your event code, the navigator control will skip the standard action associated with the button. ------------------------- Added Enumeration Options ------------------------- Enumeration: ErrorReasonEnum New option: DataSourceError DataSourceError Value rejected by the data source, setting the data source field to that value failed. ---------------------------------------------------------- Added exception classes (to "C1Input Exception Reference") ---------------------------------------------------------- ------ DataSourceException Exception ------ An exception thrown by C1Input when a control's Value property is set, but the new value is rejected by the data source, setting the data field to that value is cancelled by the data source throwing an exception. System.Object System.Exception C1.Win.C1Input.DataSourceException == Properties == ** Sender ** Control that caused the exception. [VB] Public ReadOnly Property Sender As Object [C#] public object Sender {get;} ** Value ** Current value in the control that caused the exception. [VB] Public ReadOnly Property Value As Object [C#] public object Value {get;} ** InnerException ** Exception thrown by the data source on the attempt to set data field value. [VB] Public ReadOnly Property InnerException As Exception [C#] public Exception InnerException {get;} Remarks: This property is inherited from the Exception class. ================== Corrected problems ================== -- When data source rejects value assigned to C1TextBox.Value, an unhandled exception was thrown and program stopped (if leaving control with mouse click) or the user was not allowed to leave the control, without any message or exception (if leaving control with Tab). Now data source exceptions are handled properly, and the user can handle this type of errors in the normal way: with ErrorInfo class, ValidationError event handler, and ValidationException exception. When C1TextBox.Value property is assigned from user's code and EditMode = False, a special exception DataSourceException is thrown if the value can't be saved in the data source. -- Validation was skipped when the value was selected from dropdown calendar. -- When input focus moved from a C1TextBox (or a derived control) to a C1DropDownControl, pre- and post-validation in C1TextBox was performed twice and the error message was popping up twice. -- When a C1DbNavigator button is clicked, the form is validated, that is, Validating event is called for the control that was in focus. -- Now users can set the property C1DbNavigator.MoveDelayFirst to 0, it will suppress autorepeat mode. =============================================== C1Input 1.0.20024.31 04 Sep 2002 =============================================== ===================== What's New ===================== -- Custom dropdown: you can create your own dropdown editors (forms) and attach them to controls. -- New DateEditMonthCalendar class is used for C1DateEditor dropdown calendar. Its properties can be edited at design time in the C1DateEditor.Calendar property. -- Added UpDownButtonClick event. -- Added C1DbNavigator.Error event. -- Added ErrorInfo.ErrorMessageCaption property. -- Added Tutorial 8 for the new custom dropdown functionality. -- Added Samples directory. ================================== Enhancements/Documentation Changes ================================== ----------------- New Functionality ----------------- ** Custom dropdown ** This powerful custom dropdown feature allows you to create any dropdown editor you need, in addition to the standard calendar and calculator dropdowns provided by C1Input. Dropdown editors are created visually as forms in your project. To create your own custom dropdown editor, use the C1DropDownControl. This control class derives from C1TextBox and adds custom dropdown functionality and up-down buttons. To create a dropdown editor for your control, add a form to your project derived from C1.Win.C1Input.DropDownForm (see Tutorial 8) and select the form class name in the DropDownFormClassName property of your C1DropDownControl. In your DropDownForm-derived form you can set the Value property of C1DropDownControl when necessary (use the DropDownForm.OwnerControl property to get the control object), or you can do it when the form is closing, in the PostChanges event. See the DropDownForm class for the full description of available options for custom dropdown forms. See also the Samples directory for common use samples of of the custom dropdown functionality. Another option, if you want to create a custom control with dropdown functionality, is to derive a custom control class from C1DropDownControl and override its DefaultDropDownFormClassName property. ------------- Renamed Class ------------- DropDownControl class has been renamed to C1DropDownControl. It is now available on the Visual Studio Toolbar. ------------------ Changed Properties ------------------ ** C1DateEdit.Calendar ** Return type changed from System.Windows.Forms.MonthCalendar to C1.Win.C1Input.DateEditMonthCalendar. [VB] Public ReadOnly Property Calendar As C1.Win.C1Input.DateEditMonthCalendar [C#] public C1.Win.C1Input.DateEditMonthCalendar Calendar {get;} ---------------- Added Properties ---------------- ** ErrorInfo.ErrorMessageCaption ** The text to display in the title bar of the error message box. [VB] Public Property ErrorMessageCaption As String [C#] public string ErrorMessageCaption {get; set;} ** C1DropDownControl.DropDownFormClassName ** Specifies the class name of a Form serving as the dropdown window. [VB] Public Property DropDownFormClassName As String [C#] public string DropDownFormClassName {get; set;} The class must be derived from C1.Win.C1Input.DropDownForm. ** C1DropDownControl.DefaultDropDownFormClassName ** Specifies form class that is used by default as the dropdown for the control. [VB] Overridable Protected ReadOnly Property DefaultDropDownFormClassName As String [C#] protected virtual string DefaultDropDownFormClassName {get;} This property is overriden in the C1NumericEdit and C1DateEdit controls. It returns a calculator form in C1NumericEdit and a calendar form in C1DateEdit. If you create your own custom control derived from C1DropDown, you can override this property to specify the dropdown form used by your custom control. The value, if non-empty, must be a full class name including namespace. The class must derive from C1.Win.C1Input.DropDownForm. If the DropDownFormClassName is set, it overrides the default dropdown. ** C1DropDownControl.DropDownForm ** Returns dropdown form instance associated with the control. [VB] Public ReadOnly Property DropDownForm As DropDownForm [C#] public DropDownForm DropDownForm {get;} ------------ Added Events ------------ ** UpDownButtonClick ** Public Event UpDownButtonClick As UpDownButtonClickEventHandler Occurs when UpDown buttons are clicked. Applies to: C1DateEdit C1NumericEdit C1DropDownControl ** DropDownAlignChanged ** Public Event DropDownAlignChanged As EventHandler Occurs when the value of the DropDownAlign property has changed. Applies to: C1DateEdit C1NumericEdit C1DropDownControl ** Error ** Public Event Error As NavigatorErrorEventHandler Occurs when an exceptions is thrown performing an action on button click. If the programmer does not handle the exception in the Error event, C1DbNavigator shows standard message box and the exception is considered handled, does not propagate further. The programmer can show a custom message box or handle the exception in another way in the Error event code and set the ShowErrorMessage event argument to False to suppress the standard message box. It is also possible to set the ErrorMessage and ErrorMessageCaption event arguments to change the standard error message box. The programmers can also throw an exception in the Error event if they want the exception to propagate beyond C1DbNavigator. ------------- Added Classes ------------- ------ DateEditMonthCalendar Control ------ The calendar used as a dropdown in the C1DateEdit control. System.Object System.MarshalDyRefObject System.ComponentModel.Component System.Windows.Forms.Control System.Windows.Forms.MonthCalendar C1.Win.C1Input.DateEditMonthCalendar == Properties (MonthCalendar properties are not shown): == ** ShowTodayButton ** Determines if the Today button of the dropdown calendar is visible. [VB] Public Property ShowTodayButton As Boolean [C#] public bool ShowTodayButton {get; set;} ** ShowClearButton ** Determines if the Clear button of the dropdown calendar is visible. [VB] Public Property ShowClearButton As Boolean [C#] public bool ShowClearButton {get; set;} ** Date ** Currently selected date in the calendar. [VB] Public Property Date As DateTime [C#] public DateTime Date {get; set;} ** DateIsNull ** Indicates if no date is currently selected. [VB] Public Property DateIsNull As Boolean [C#] public bool DateIsNull {get; set;} == Events (MonthCalendar events are not shown): == Public Event TodayButtonVisibilityChanged As EventHandler Occurs when Today button visibility is changed. Public Event ClearButtonVisibilityChanged As EventHandler Occurs when Clear button visibility is changed. Public Event DateChanged As NullableDateTimeEventHandler Occurs when the value of the Date property is changed. Public Event DateSelected As NullableDateTimeEventHandler Occurs when the user selects a new value for the Date property. ------ DropDownForm Class ------ Base class for custom dropdown forms. System.Object System.MarshalDyRefObject System.ComponentModel.Component System.Windows.Forms.Control System.Windows.Forms.ScrollableControl System.Windows.Forms.ContainerControl System.Windows.Forms.Form C1.Win.C1Input.DropDownForm == Properties (Form properties are not shown): == ** BorderStyle ** Determines border style of the dropdown. [VB] Public Property BorderStyle As BorderStyle [C#] public BorderStyle BorderStyle {get; set;} ** FocusControl ** Determines the control in the form that receives focus when the form opens. [VB] Public Property FocusControl As Control [C#] public Control FocusControl {get; set;} If this property is set to null, the form itself receives focus. ** DropDownAlign ** Determines the alignment of the dropdown form relative to the owner control. [VB] Public Property DropDownAlign As DropDownFormAlignmentEnum [C#] public DropDownFormAlignmentEnum DropDownAlign {get; set;} ** Options ** Determines option flags for dropdown form behavior. [VB] Public Property Options As DropDownFormOptionsFlags [C#] public DropDownFormOptionsFlags Options {get; set;} See DropDownFormOptionsFlags for the list of available options. ** OwnerControl ** Returns the control that owns the dropdown form. [VB] Public ReadOnly Property OwnerControl As C1DropDownControl [C#] public C1DropDownControl OwnerControl {get;} == Events (Form events are not shown): == Public Event Open As EventHandler Occurs when the dropdown form is opened, before it is shown to the user. Use this event to initialize the form. Public Event PostChanges As EventHandler Occurs when the dropdown form is closed and the changes made by the user in the form must be saved in the control. Use this event to change the control's Value if it has not been changed before. Public Event CancelChanges As EventHandler Occurs when the dropdown editing is cancelled. Use this event to cancel changes made to the control's Value in the dropdown form, to restore the previous value, when the form is closed with cancellation (for example, the Esc key pressed). Public Event OwnerControlTextChanged As EventHandler Occurs when the Text property of OwnerControl changes. Public Event OwnerControlValueChanged As EventHandler Occurs when the Value property of OwnerControl changes. --------------------------- Added Event Handler Classes --------------------------- *** NullableDateTimeEventHandler Delegate *** public delegate void NullableDateTimeEventHandler(object sender, NullableDateTimeEventArgs e); Arguments: sender The source of the event e A NullableDateTimeEventArgs object that contains the event data Applies to: DateChanged DateSelected *** UpDownButtonClickEventHandler Delegate *** public delegate void UpDownButtonClickEventHandler(object sender, UpDownButtonClickEventArgs e); Arguments: sender The source of the event e An UpDownButtonClickEventArgs object that contains the event data Applies to: UpDownButtonClick *** NavigatorErrorEventHandler Delegate *** public delegate void NavigatorErrorEventHandler(object sender, NavigatorErrorEventArgs e); Arguments: sender The source of the event e A NavigatorErrorEventArgs object that contains the event data Applies to: C1DbNavigator.Error ---------------------------- Added Event Argument Classes ---------------------------- *** NullableDateTimeEventArgs *** Public Class NullableDateTimeEventArgs Members: DateTime Date The date value. bool DateIsNull Set to True if the date value is null. See Also: NullableDateTimeEventHandler *** UpDownButtonClickEventArgs *** Public Class UpDownButtonClickEventArgs Members: int Delta Set to 1 if Up button is pressed, to -1 if Down button is pressed. See Also: UpDownButtonClickEventHandler *** NavigatorErrorEventArgs *** Public Class NavigatorErrorEventArgs Members: NavigatorButtonEnum Button The clicked C1DbNavigator button. Exception Exception Exception that occured while performing the button action. bool ShowErrorMessage This argument is set to true by default. If it is set to False by event code, the standard message box is not shown. string ErrorMessage Error message shown in the standard message box. The programmer can set this argument to change the message. string ErrorMessageCaption The caption of the standard message box. The programmer can set this argument to change the caption. See Also: NavigatorErrorEventHandler ------------------ Added Enumerations ------------------ *** DropDownFormOptionsFlags Enumeration *** Used by DropDownForm.Options property. Syntax: Public Enum DropDownFormOptionsFlags AlwaysPostChanges If this flag is set, the changes to the control Value can only be cancelled explicitly, with Esc key or using the CloseDropDown method, and implicit cancelation (when the form is closed because it loses focus) is disabled. AutoResize If set, the dropdown form width is automatically adjusted to the width of the owner control before the form is shown. FixedHeight The end users are not allowed to change the height of the dropdown form resizing it. FixedWidth The end users are not allowed to change the width of the dropdown form resizing it. FixedSize = FixedWidth + FixedHeight NoCancelOnEscape If this flag is set, pressing the Esc key does not close the form. NoPostOnEnter If this flag is set, pressing the Enter key does not close the form. *** DropDownFormAlignmentEnum Enumeration *** Used by DropDownForm.DropDownAlign property. Syntax: Public Enum DropDownFormAlignmentEnum Default The alignment of the dropdown form is determined by the DropDownAlign property of the OwnerControl. Center Center alignment. Left Left alignment. Right Right alignment. ------------- Other Changes ------------- -- Class ValidationException is now inherited from System.Exception instead of System.ApplicationException. ================== Corrected Problems ================== -- Control does not switch to edit mode if it is the first control in tab order in an MDI child form. -- With non-empty EditMask, EditFormat was ignored, the value was not formatted before passing it to the edit mask (MaskInfo.StoredContent was not properly formated). -- Changes lost, not saved in the data source when moving row without moving focus out of a C1Input control. -- Validating and Validated events were not raised when the user presses a button on C1DbNavigator. -- ValueChanged was not triggered correctly. -- ModifiedChanged was not triggered correctly. -- Fixed C1NumericEdit/C1DateEdit.BorderStyle = FixedSingle drawing. -- Removed redundant Enter event calls.