185 lines
6.0 KiB
C#
185 lines
6.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using DevComponents.Editors;
|
|
using System.Drawing;
|
|
|
|
namespace DevComponents.DotNetBar
|
|
{
|
|
/// <summary>
|
|
/// Defines a attribute which applies an double type numeric editor to a property when used with AdvPropertyGrid control. Applies to double property types only.
|
|
/// </summary>
|
|
public class PropertyDoubleEditor : PropertyValueEditor
|
|
{
|
|
#region Implementation
|
|
/// <summary>
|
|
/// Gets or sets whether up/down button is shown.
|
|
/// </summary>
|
|
public bool ShowUpDownButton = true;
|
|
/// <summary>
|
|
/// Gets or sets the display format for the control when control does not have input focus.
|
|
/// </summary>
|
|
public string DisplayFormat = "";
|
|
/// <summary>
|
|
/// Gets or sets the minimum value that can be entered.
|
|
/// </summary>
|
|
public double MinValue = double.MinValue;
|
|
/// <summary>
|
|
/// Gets or sets the maximum value that can be entered.
|
|
/// </summary>
|
|
public double MaxValue = double.MaxValue;
|
|
/// <summary>
|
|
/// Gets or sets whether empty state i.e. null/nothing value is allowed when editor is used with nullable types.
|
|
/// </summary>
|
|
public bool AllowEmptyState = false;
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the PropertyDoubleEditor class.
|
|
/// </summary>
|
|
public PropertyDoubleEditor()
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the PropertyDoubleEditor class.
|
|
/// </summary>
|
|
/// <param name="showUpDownButton"></param>
|
|
public PropertyDoubleEditor(bool showUpDownButton)
|
|
{
|
|
ShowUpDownButton = showUpDownButton;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the PropertyDoubleEditor class.
|
|
/// </summary>
|
|
/// <param name="minValue"></param>
|
|
/// <param name="maxValue"></param>
|
|
public PropertyDoubleEditor(double minValue, double maxValue)
|
|
{
|
|
MinValue = minValue;
|
|
MaxValue = maxValue;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the PropertyDoubleEditor class.
|
|
/// </summary>
|
|
/// <param name="showUpDownButton"></param>
|
|
/// <param name="minValue"></param>
|
|
/// <param name="maxValue"></param>
|
|
public PropertyDoubleEditor(bool showUpDownButton, double minValue, double maxValue)
|
|
{
|
|
ShowUpDownButton = showUpDownButton;
|
|
MinValue = minValue;
|
|
MaxValue = maxValue;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the PropertyDoubleEditor class.
|
|
/// </summary>
|
|
/// <param name="showUpDownButton"></param>
|
|
/// <param name="displayFormat"></param>
|
|
/// <param name="minValue"></param>
|
|
/// <param name="maxValue"></param>
|
|
public PropertyDoubleEditor(bool showUpDownButton, string displayFormat, double minValue, double maxValue)
|
|
{
|
|
ShowUpDownButton = showUpDownButton;
|
|
DisplayFormat = displayFormat;
|
|
MinValue = minValue;
|
|
MaxValue = maxValue;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the PropertyDoubleEditor class.
|
|
/// </summary>
|
|
/// <param name="showUpDownButton"></param>
|
|
/// <param name="displayFormat"></param>
|
|
public PropertyDoubleEditor(bool showUpDownButton, string displayFormat)
|
|
{
|
|
ShowUpDownButton = showUpDownButton;
|
|
DisplayFormat = displayFormat;
|
|
}
|
|
|
|
public override IPropertyValueEditor CreateEditor(System.ComponentModel.PropertyDescriptor propertyDescriptor, object targetObject)
|
|
{
|
|
if (propertyDescriptor.PropertyType != typeof(double) && propertyDescriptor.PropertyType != typeof(double?))
|
|
throw new InvalidOperationException("PropertyDateTimeEditor works only with double type properties");
|
|
|
|
DoubleValueEditor editor = new DoubleValueEditor();
|
|
editor.AutoBorderSize = 1;
|
|
|
|
if (!string.IsNullOrEmpty(DisplayFormat))
|
|
{
|
|
editor.DisplayFormat = DisplayFormat;
|
|
}
|
|
editor.ShowUpDown = ShowUpDownButton;
|
|
editor.Height = Dpi.Height14;
|
|
editor.BackgroundStyle.Class = "";
|
|
editor.BackgroundStyle.BackColor = Color.White;
|
|
editor.MinValue = MinValue;
|
|
editor.MaxValue = MaxValue;
|
|
editor.AllowEmptyState = AllowEmptyState;
|
|
return editor;
|
|
}
|
|
#endregion
|
|
|
|
private class DoubleValueEditor : DoubleInput, IPropertyValueEditor
|
|
{
|
|
#region IPropertyValueEditor Members
|
|
|
|
public System.Drawing.Font EditorFont
|
|
{
|
|
get
|
|
{
|
|
return this.Font;
|
|
}
|
|
set
|
|
{
|
|
this.Font = value;
|
|
}
|
|
}
|
|
|
|
public bool IsEditorFocused
|
|
{
|
|
get { return this.Focused; }
|
|
}
|
|
|
|
public void FocusEditor()
|
|
{
|
|
this.Focus();
|
|
}
|
|
|
|
public object EditValue
|
|
{
|
|
get
|
|
{
|
|
return this.ValueObject;
|
|
}
|
|
set
|
|
{
|
|
if (value == null)
|
|
this.ValueObject = null;
|
|
else
|
|
this.Value = (double)value;
|
|
}
|
|
}
|
|
|
|
protected override void OnValueChanged(EventArgs e)
|
|
{
|
|
OnEditValueChanged(e);
|
|
base.OnValueChanged(e);
|
|
}
|
|
|
|
private void OnEditValueChanged(EventArgs e)
|
|
{
|
|
EventHandler ev = EditValueChanged;
|
|
if (ev != null) ev(this, e);
|
|
}
|
|
|
|
public event EventHandler EditValueChanged;
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
}
|