DotNet 4.8.1 build of DotNetBar
This commit is contained in:
@@ -0,0 +1,322 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Forms.Design;
|
||||
using DevComponents.DotNetBarKnobControl.Design.Properties;
|
||||
|
||||
namespace DevComponents.Instrumentation.Design
|
||||
{
|
||||
[ToolboxItem(false)]
|
||||
public partial class FormatStringDropDown : UserControl
|
||||
{
|
||||
#region Private variables
|
||||
|
||||
private string _FormatString;
|
||||
private bool _EscapePressed;
|
||||
|
||||
private IWindowsFormsEditorService _EditorService;
|
||||
private ITypeDescriptorContext _Context;
|
||||
|
||||
private string[] _Items = new string[] {
|
||||
"Custom",
|
||||
"Currency",
|
||||
"Decimal",
|
||||
"Fixed-point",
|
||||
"General",
|
||||
"Hexadecimal",
|
||||
"Number",
|
||||
"Percent",
|
||||
"Scientific"};
|
||||
|
||||
private Format[] _Formats = new Format[] {
|
||||
new Format("", (string)(Resources.ResourceManager.GetObject("CustomDesc"))),
|
||||
new Format("C", (string)(Resources.ResourceManager.GetObject("CurrencyDesc"))),
|
||||
new Format("D", (string)(Resources.ResourceManager.GetObject("DecimalDesc"))),
|
||||
new Format("F", (string)(Resources.ResourceManager.GetObject("FixedPointDesc"))),
|
||||
new Format("G", (string)(Resources.ResourceManager.GetObject("GeneralDesc"))),
|
||||
new Format("X", (string)(Resources.ResourceManager.GetObject("HexadecimalDesc"))),
|
||||
new Format("N", (string)(Resources.ResourceManager.GetObject("NumericDesc"))),
|
||||
new Format("P", (string)(Resources.ResourceManager.GetObject("PercentDesc"))),
|
||||
new Format("E", (string)(Resources.ResourceManager.GetObject("ExponentialDesc")))};
|
||||
|
||||
#endregion
|
||||
|
||||
public FormatStringDropDown()
|
||||
{
|
||||
InitFormatList();
|
||||
}
|
||||
|
||||
public FormatStringDropDown(string formatString,
|
||||
IWindowsFormsEditorService editorService, ITypeDescriptorContext context)
|
||||
{
|
||||
_FormatString = formatString;
|
||||
|
||||
_EditorService = editorService;
|
||||
_Context = context;
|
||||
|
||||
InitFormatList();
|
||||
|
||||
BackColor = SystemColors.Control;
|
||||
}
|
||||
|
||||
#region InitFormatList
|
||||
|
||||
private void InitFormatList()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
_CbxFmtType.DrawMode = DrawMode.OwnerDrawFixed;
|
||||
_CbxFmtType.DrawItem += CbxFmtType_DrawItem;
|
||||
|
||||
_CbxFmtType.Items.AddRange(_Items);
|
||||
_CbxFmtType.SelectedIndex = 3;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public properties
|
||||
|
||||
#region FormatString
|
||||
|
||||
public string FormatString
|
||||
{
|
||||
get { return (_FormatString); }
|
||||
|
||||
set
|
||||
{
|
||||
_FormatString = value;
|
||||
|
||||
_Context.OnComponentChanging();
|
||||
_Context.PropertyDescriptor.SetValue(_Context.Instance, value);
|
||||
_Context.OnComponentChanged();
|
||||
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region EditorService
|
||||
|
||||
public IWindowsFormsEditorService EditorService
|
||||
{
|
||||
get { return (_EditorService); }
|
||||
set { _EditorService = value; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region EscapePressed
|
||||
|
||||
public bool EscapePressed
|
||||
{
|
||||
get { return (_EscapePressed); }
|
||||
set { _EscapePressed = value; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
#region CbxFmtType_DrawItem
|
||||
|
||||
void CbxFmtType_DrawItem(object sender, DrawItemEventArgs e)
|
||||
{
|
||||
e.DrawBackground();
|
||||
|
||||
if (e.Index == 0)
|
||||
{
|
||||
e.Graphics.DrawLine(Pens.Gainsboro, new Point(e.Bounds.Left, e.Bounds.Bottom - 1),
|
||||
new Point(e.Bounds.Right, e.Bounds.Bottom - 1));
|
||||
}
|
||||
|
||||
TextRenderer.DrawText(e.Graphics, _CbxFmtType.Items[e.Index].ToString(),
|
||||
_CbxFmtType.Font, e.Bounds, _CbxFmtType.ForeColor, TextFormatFlags.Left);
|
||||
|
||||
e.DrawFocusRectangle();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region TextBoxKeyPress
|
||||
|
||||
private void TextBoxKeyPress(object sender, KeyPressEventArgs e)
|
||||
{
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region CbxFmtType_SelectedIndexChanged
|
||||
|
||||
private void CbxFmtType_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if ((uint)_CbxFmtType.SelectedIndex < _Formats.Length)
|
||||
{
|
||||
Format fmt = _Formats[_CbxFmtType.SelectedIndex];
|
||||
|
||||
_LbDescription.Text = fmt.Description;
|
||||
|
||||
UpdateSample();
|
||||
}
|
||||
else
|
||||
{
|
||||
_TbSample.Text = "";
|
||||
_LbDescription.Text = "";
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region UpdateSample
|
||||
|
||||
private void UpdateSample()
|
||||
{
|
||||
if (_CbxFmtType.SelectedIndex == 0)
|
||||
{
|
||||
_TbCustom.Visible = true;
|
||||
_TbPrecision.Visible = false;
|
||||
_LbPrecision.Text = @"Format String:";
|
||||
|
||||
UpdateCustomSample();
|
||||
}
|
||||
else if (_CbxFmtType.SelectedIndex > 0)
|
||||
{
|
||||
_TbPrecision.Visible = true;
|
||||
_TbCustom.Visible = false;
|
||||
_LbPrecision.Text = @"Precision:";
|
||||
|
||||
UpdateNumericSample();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region UpdateCustomSample
|
||||
|
||||
private void UpdateCustomSample()
|
||||
{
|
||||
_FormatString = _TbCustom.Text;
|
||||
|
||||
try
|
||||
{
|
||||
_TbSample.Text = String.Format("{0:" + _FormatString + "}", 1234567890);
|
||||
}
|
||||
catch
|
||||
{
|
||||
_TbSample.Text = @"Invalid Format String.";
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region UpdateNumericSample
|
||||
|
||||
private void UpdateNumericSample()
|
||||
{
|
||||
Format fmt = _Formats[_CbxFmtType.SelectedIndex];
|
||||
|
||||
try
|
||||
{
|
||||
int precision = GetPrecision();
|
||||
|
||||
_FormatString = fmt.FormatCode + precision.ToString();
|
||||
|
||||
_TbSample.Text = String.Format("{0:" + _FormatString + "}", 1234567890);
|
||||
}
|
||||
catch
|
||||
{
|
||||
_TbSample.Text = @"Invalid Format String.";
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region GetPrecision
|
||||
|
||||
private int GetPrecision()
|
||||
{
|
||||
int precision;
|
||||
|
||||
if (int.TryParse(_TbPrecision.Text, out precision))
|
||||
return (precision < 0 ? 0 : precision > 99 ? 99 : precision);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region MyTextChanged
|
||||
|
||||
private void MyTextChanged(object sender, EventArgs e)
|
||||
{
|
||||
UpdateSample();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region BtnOk_Click
|
||||
|
||||
private void BtnOk_Click(object sender, EventArgs e)
|
||||
{
|
||||
_EditorService.CloseDropDown();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region BtnCancel_Click
|
||||
|
||||
private void BtnCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
_EscapePressed = true;
|
||||
_EditorService.CloseDropDown();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region MyPreviewKeyDown
|
||||
|
||||
private void MyPreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Escape)
|
||||
_EscapePressed = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Format
|
||||
|
||||
private class Format
|
||||
{
|
||||
#region Private variables
|
||||
|
||||
private string _FormatCode;
|
||||
private string _Description;
|
||||
|
||||
#endregion
|
||||
|
||||
public Format(string formatCode, string description)
|
||||
{
|
||||
_FormatCode = formatCode;
|
||||
_Description = description;
|
||||
}
|
||||
|
||||
#region Public properties
|
||||
|
||||
public string FormatCode
|
||||
{
|
||||
get { return (_FormatCode); }
|
||||
}
|
||||
|
||||
public string Description
|
||||
{
|
||||
get { return (_Description); }
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user