private static void dataGrid_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
 {
     if (sender is DataGridView)
     {
         var dataGrid      = (DataGridView)sender;
         var dataBoundItem = dataGrid.Rows[e.RowIndex].DataBoundItem;
         if (dataBoundItem != null)
         {
             SelectItemForm.ShowData(dataBoundItem, "Row inspector");
         }
     }
 }
        private void searchFirmaBtn_Click(object sender, EventArgs e)
        {
            var form = new SelectItemForm
            {
                Datas = Firma.GetAll().Cast <GestiuneObject>().ToList(),
                Text  = "Cautare firma"
            };

            if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                SelectedFirma = form.SelectedObject == null ? null : (Firma)form.SelectedObject;
            }
        }
Exemple #3
0
        private void searchProdusBtn_Click(object sender, EventArgs e)
        {
            var form = new SelectItemForm
            {
                Datas = Produs.GetAll().Cast <GestiuneObject>().ToList(),
                Text  = "Alegeti un produs"
            };

            if (form.ShowDialog() == DialogResult.OK)
            {
                SelectedProdus = form.SelectedObject == null ? null : (Produs)form.SelectedObject;
            }
        }
Exemple #4
0
        private void btnSelectUser_Click(object sender, EventArgs e)
        {
            SelectItemForm <IPerson> frmSelect = new SelectItemForm <IPerson>();

            frmSelect.Id          = "Id";
            frmSelect.Value       = "Name";
            frmSelect.Description = "Remark";
            frmSelect.SecondKey   = "AppId";
            frmSelect.InitItem(persons);
            frmSelect.ShowDialog();

            if (frmSelect.DialogResult == DialogResult.OK)
            {
                IPerson person = frmSelect.SelectedItem;
                this.txtUserName.Text = person.Name;

                ///判断该用户是否已经增加,如果增加检索出该用户
                IUser user = IsExistUser(person.AppId, person.Id);

                if (user != null)
                {
                    ModifyUser(user);
                    origin = user;

                    //获得用户所属角色
                    GetRoleOrgMapping();
                    //初始化角色树的Checked属性
                    InitRoleTreeChecked();
                }
                else
                {
                    origin = null;

                    this.txtUserName.Text      = person.Name;
                    this.txtUserName.Tag       = person.AppId + "||" + person.Id;
                    this.txtAccount.Text       = person.Id;
                    this.chbOriginPass.Checked = true;
                    this.chbLock.Checked       = false;
                    this.txtMemo.Text          = "";

                    //新用户,默认一个角色,把当前角色传过来作为默认角色
                    allRolesOfUser.Add(currentRole);

                    this.txtAccount.Focus();
                    this.txtAccount.SelectAll();
                }
            }

            frmSelect.Dispose();
        }
        private void searchBtn_Click(object sender, EventArgs e)
        {
            var form = new SelectItemForm
            {
                Datas = Firma.GetAll().Cast <GestiuneObject>().ToList(),
                Text  = "Cautare firma"
            };

            if (form.ShowDialog() == DialogResult.OK)
            {
                SelectedFirma = form.SelectedObject == null ? null : (Firma)form.SelectedObject;
                ClearAndEnableTextBoxes(nrTbox, serieTbox, sumaDisponibilaTbox, sumaPartialaTbox);
            }
        }
        void btnSelectUser_Click(object sender, EventArgs e)
        {
            SelectItemForm <IPerson> _frmSelect = new SelectItemForm <IPerson>();

            _frmSelect.Id          = "Id";
            _frmSelect.Value       = "Name";
            _frmSelect.Description = "Remark";
            _frmSelect.SecondKey   = "AppId";
            _frmSelect.InitItem(_persons);

            if (_frmSelect.ShowDialog() == DialogResult.OK)
            {
                IPerson _person = _frmSelect.SelectedItem;
                this.txtUserName.Text = _person.Name;

                ///判断该用户是否已经增加,如果增加检索出该用户
                ///
                IUser _user = IsExistUser(_person.AppId, _person.Id);

                if (_user != null)
                {
                    ModifyUser(_user);
                    _origin = _user;
                }
                else
                {
                    _origin = null;

                    this.txtUserName.Text      = _person.Name;
                    this.txtUserName.Tag       = _person.AppId + "||" + _person.Id;
                    this.txtAccount.Text       = _person.Id;
                    this.chbOriginPass.Checked = true;
                    this.chbLock.Checked       = false;
                    this.txtMemo.Text          = "";

                    //新用户,默认一个角色
                    NewRole();

                    this.txtAccount.Focus();
                    this.txtAccount.SelectAll();
                }
            }

            _frmSelect.Dispose();
        }
Exemple #7
0
        /// <summary>
        /// Gets the filter.
        /// </summary>
        /// <param name="options">The options.</param>
        /// <returns>
        /// The filter.
        /// </returns>
        protected override string GetFilter(SelectItemOptions options)
        {
            Assert.ArgumentNotNull((object)options, "options");
            if (options.IncludeTemplatesForDisplay.Count == 0 && options.ExcludeTemplatesForDisplay.Count == 0)
            {
                return(string.Empty);
            }
            string list1 = SelectItemForm.GetList(options.IncludeTemplatesForDisplay);
            string list2 = SelectItemForm.GetList(options.ExcludeTemplatesForDisplay);

            if (options.IncludeTemplatesForDisplay.Count > 0 && options.ExcludeTemplatesForDisplay.Count > 0)
            {
                return(string.Format("(contains('{0}', ',' + @@templateid + ',') or contains('{0}', ',' + @@templatekey + ',')) and  not (contains('{1}', ',' + @@templateid + ',') or contains('{1}', ',' + @@templatekey + ','))", (object)list1, (object)list2));
            }
            if (options.IncludeTemplatesForDisplay.Count > 0)
            {
                return(string.Format("(contains('{0}', ',' + @@templateid + ',') or contains('{0}', ',' + @@templatekey + ','))", (object)list1));
            }
            else
            {
                return("not (contains('{ExcludeList}', ',' + @@templateid + ',') or contains('{0}', ',' + @@templatekey + ',') or @@name='Placeholder Settings' or @@name='Devices' or @@name='Layouts' or @@id='{B4A0FB13-9758-427C-A7EB-1A406C045192}')".Replace("{ExcludeList}", list2));
            }
        }
        /// <summary>
        /// Gets the filter.
        /// </summary>
        /// <param name="options">The options.</param>
        /// <returns>
        /// The filter.
        /// </returns>
        protected override string GetFilter(SelectItemOptions options)
        {
            Assert.ArgumentNotNull((object)options, "options");
            if (options.IncludeTemplatesForDisplay.Count == 0 && options.ExcludeTemplatesForDisplay.Count == 0)
            {
                return(string.Empty);
            }
            string list1 = SelectItemForm.GetList(options.IncludeTemplatesForDisplay);
            string list2 = SelectItemForm.GetList(options.ExcludeTemplatesForDisplay);

            if (options.IncludeTemplatesForDisplay.Count > 0 && options.ExcludeTemplatesForDisplay.Count > 0)
            {
                return(string.Format("(contains('{0}', ',' + @@templateid + ',') or contains('{0}', ',' + @@templatekey + ',')) and  not (contains('{1}', ',' + @@templateid + ',') or contains('{1}', ',' + @@templatekey + ','))", (object)list1, (object)list2));
            }
            if (options.IncludeTemplatesForDisplay.Count > 0)
            {
                return(string.Format("(contains('{0}', ',' + @@templateid + ',') or contains('{0}', ',' + @@templatekey + ','))", (object)list1));
            }
            string str1 = "{B4A0FB13-9758-427C-A7EB-1A406C045192}";
            string str2 = "{B87CD5F0-4E72-429D-90A3-B285F1D038CA}";
            string str3 = "{75D27C2B-5F88-4CC8-B1DE-8412A1628408}";

            return(string.Format("not (contains('{0}', ',' + @@templateid + ',') or contains('{0}', ',' + @@templatekey + ',') or @@name='Placeholder Settings' or @@name='Devices' or @@name='Layouts' or @@id='{1}' or @@id='{2}' or @@id='{3}' or @@id='{4}')", (object)list2, (object)str1, (object)DeviceSimulationUtil.SimulatorsFolderId, (object)str2, (object)str3));
        }
Exemple #9
0
 /// <summary>
 /// Columns generator that works on column data descriptions (ColumnDataDescriptor)
 /// </summary>
 /// <param name="dataGrid">DataGridView</param>
 /// <param name="DataSource">Data Source to support data-binding</param>
 /// <param name="Columns">Column data descriptors</param>
 public static void GenerateColumns(this DataGridView dataGrid, object DataSource, params ColumnDataDescriptor[] Columns)
 {
     dataGrid.SuspendLayout();
     dataGrid.AutoGenerateColumns = false;
     dataGrid.Columns.Clear();
     foreach (var column in Columns)
     {
         if (column.Mode == ColumnEditorMode.TextBox)
         {
             var newColumn = new DataGridViewTextBoxColumn();
             column.GeneratedDataGridViewColumn = newColumn;
             newColumn.SortMode   = DataGridViewColumnSortMode.Automatic;
             newColumn.HeaderText = column.HeaderText;
             if (column.MaxLength.HasValue)
             {
                 newColumn.MaxInputLength = column.MaxLength.Value;
             }
             if (newColumn.MaxInputLength > 260)
             {
                 newColumn.DefaultCellStyle = new DataGridViewCellStyle()
                 {
                     WrapMode = DataGridViewTriState.True
                 }
             }
             ;
             if (column.FillWeight.HasValue)
             {
                 newColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                 newColumn.FillWeight   = column.FillWeight.Value;
                 newColumn.MinimumWidth = column.HeaderText.Length * 10;
                 if (newColumn.MinimumWidth < 50)
                 {
                     newColumn.MinimumWidth = 50;
                 }
             }
             newColumn.ToolTipText      = column.ColumnName;
             newColumn.DataPropertyName = column.ColumnName;
             if (column.NullValue != null)
             {
                 if (newColumn.DefaultCellStyle != null)
                 {
                     newColumn.DefaultCellStyle.NullValue = column.NullValue;
                 }
                 else
                 {
                     newColumn.DefaultCellStyle = new DataGridViewCellStyle()
                     {
                         NullValue = column.NullValue
                     }
                 };
             }
             newColumn.ReadOnly = column.IsReadOnly;
             if (column.Style.HasValue)
             {
                 DataGridViewExtenders.SetEditorDataStyle(newColumn, column.Style.Value);
             }
             dataGrid.Columns.Add(newColumn);
             if (column.FormatValueMethod != null)
             {
                 newColumn.Tag            = column.FormatValueMethod;
                 dataGrid.CellFormatting += delegate(object sender, DataGridViewCellFormattingEventArgs e)
                 {
                     var _data = newColumn.Tag as FormatValueDelegate;
                     if (_data != null && e.ColumnIndex == newColumn.Index && e.RowIndex >= 0)
                     {
                         var _value = _data.Invoke(dataGrid.Rows[e.RowIndex].DataBoundItem, newColumn.DataPropertyName);
                         if (_value != null)
                         {
                             e.Value             = _value;
                             e.FormattingApplied = _value is string;
                         }
                     }
                 };
             }
         }
         else if (column.Mode == ColumnEditorMode.CheckBox)
         {
             var newColumn = new DataGridViewCheckBoxColumn();
             column.GeneratedDataGridViewColumn = newColumn;
             newColumn.SortMode   = DataGridViewColumnSortMode.Automatic;
             newColumn.HeaderText = column.HeaderText;
             if (column.FillWeight.HasValue)
             {
                 newColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                 newColumn.FillWeight   = column.FillWeight.Value;
                 newColumn.MinimumWidth = column.HeaderText.Length * 10;
                 if (newColumn.MinimumWidth < 50)
                 {
                     newColumn.MinimumWidth = 50;
                 }
             }
             newColumn.ToolTipText      = column.ColumnName;
             newColumn.ThreeState       = column.IsNull;
             newColumn.DataPropertyName = column.ColumnName;
             newColumn.ReadOnly         = column.IsReadOnly;
             dataGrid.Columns.Add(newColumn);
         }
         else if (column.Mode == ColumnEditorMode.ListBox)
         {
             DataGridViewColumn newColumn;
             if (column.IsReadOnly)
             {
                 var _newColumn = new DataGridViewTextBoxColumn();
                 newColumn = _newColumn;
             }
             else
             {
                 var _newColumn = new DataGridViewLinkColumn();
                 _newColumn.TrackVisitedState = false;
                 _newColumn.LinkBehavior      = LinkBehavior.HoverUnderline;
                 newColumn = _newColumn;
             }
             column.GeneratedDataGridViewColumn = newColumn;
             newColumn.SortMode   = DataGridViewColumnSortMode.Automatic;
             newColumn.HeaderText = column.HeaderText;
             if (column.FillWeight.HasValue)
             {
                 newColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                 newColumn.FillWeight   = column.FillWeight.Value;
                 newColumn.MinimumWidth = column.HeaderText.Length * 10;
                 if (newColumn.MinimumWidth < 50)
                 {
                     newColumn.MinimumWidth = 50;
                 }
             }
             newColumn.ToolTipText      = column.ColumnName;
             newColumn.DataPropertyName = column.ColumnName;
             newColumn.ReadOnly         = true;
             if (column.Style.HasValue)
             {
                 DataGridViewExtenders.SetEditorDataStyle(newColumn, column.Style.Value);
             }
             newColumn.Tag = Tuple.Create(column.DataSource, column.ValueMember, column.DisplayMember, column.GetListBoxItemsMethod, column.FormatValueMethod);
             dataGrid.Columns.Add(newColumn);
             dataGrid.CellFormatting += delegate(object sender, DataGridViewCellFormattingEventArgs e)
             {
                 var _data = newColumn.Tag as Tuple <object, string, string, GetListBoxItemsDelegate, FormatValueDelegate>;
                 if (_data != null && e.ColumnIndex == newColumn.Index && e.RowIndex >= 0)
                 {
                     if (_data.Item5 != null)
                     {
                         var _value = _data.Item5.Invoke(dataGrid.Rows[e.RowIndex].DataBoundItem, newColumn.DataPropertyName);
                         if (_value != null)
                         {
                             e.Value             = _value;
                             e.FormattingApplied = _value is string;
                         }
                     }
                     else if (dataGrid.Rows[e.RowIndex].DataBoundItem is DataRowView && (_data.Item1 is DataView || _data.Item1 is DataTable))
                     {
                         var dataBoundItem = (DataRowView)dataGrid.Rows[e.RowIndex].DataBoundItem;
                         var _data1        = _data.Item1 is DataView ? ((DataView)_data.Item1).Table : (DataTable)_data.Item1;
                         var _row          = _data1.Rows.Find(dataBoundItem[newColumn.DataPropertyName]);
                         e.Value             = _row != null ? _row[_data.Item3].ToString() : string.Empty;
                         e.FormattingApplied = true;
                     }
                 }
             };
             if (!column.IsReadOnly)
             {
                 dataGrid.CellClick += delegate(object sender, DataGridViewCellEventArgs e)
                 {
                     var _data = newColumn.Tag as Tuple <object, string, string, GetListBoxItemsDelegate, FormatValueDelegate>;
                     if (_data != null && e.ColumnIndex == newColumn.Index && e.RowIndex >= 0 && dataGrid.Rows[e.RowIndex].DataBoundItem is DataRowView)
                     {
                         var    dataBoundItem = (DataRowView)dataGrid.Rows[e.RowIndex].DataBoundItem;
                         object items         = _data.Item1;
                         bool   agc           = false;
                         if (_data.Item4 != null)
                         {
                             items = _data.Item4.Invoke();
                             if (items == null)
                             {
                                 FormServices.ShowError("No data exists", true);
                                 return;
                             }
                             agc = true;
                         }
                         var row = SelectItemForm.GetSelectedRow(items, _data.Item2, _data.Item3, dataBoundItem[newColumn.DataPropertyName], agc);
                         if (row != null)
                         {
                             dataBoundItem.BeginEdit();
                             dataBoundItem[newColumn.DataPropertyName] = row[_data.Item2];
                             dataBoundItem.EndEdit();
                         }
                     }
                 }
             }
             ;
         }
         else if (column.Mode == ColumnEditorMode.ComboBox)
         {
             var newColumn = new DataGridViewComboBoxColumn();
             column.GeneratedDataGridViewColumn       = newColumn;
             newColumn.DisplayStyleForCurrentCellOnly = true;
             newColumn.DisplayStyle = column.IsReadOnly ? DataGridViewComboBoxDisplayStyle.Nothing : DataGridViewComboBoxDisplayStyle.DropDownButton;
             newColumn.AutoComplete = true;
             if (column.IsNull)
             {
                 newColumn.DefaultCellStyle = new DataGridViewCellStyle()
                 {
                     DataSourceNullValue = DBNull.Value
                 }
             }
             ;
             newColumn.SortMode   = DataGridViewColumnSortMode.Automatic;
             newColumn.HeaderText = column.HeaderText;
             if (column.FillWeight.HasValue)
             {
                 newColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                 newColumn.FillWeight   = column.FillWeight.Value;
                 newColumn.MinimumWidth = column.HeaderText.Length * 10;
                 if (newColumn.MinimumWidth < 50)
                 {
                     newColumn.MinimumWidth = 50;
                 }
             }
             newColumn.ToolTipText      = column.ColumnName;
             newColumn.DataPropertyName = column.ColumnName;
             newColumn.DataSource       = column.DataSource;
             if (!string.IsNullOrWhiteSpace(column.ValueMember))
             {
                 newColumn.ValueMember = column.ValueMember;
             }
             if (!string.IsNullOrWhiteSpace(column.DisplayMember))
             {
                 newColumn.DisplayMember = column.DisplayMember;
             }
             newColumn.ReadOnly = column.IsReadOnly;
             dataGrid.Columns.Add(newColumn);
             if (column.FormatValueMethod != null)
             {
                 newColumn.Tag            = column.FormatValueMethod;
                 dataGrid.CellFormatting += delegate(object sender, DataGridViewCellFormattingEventArgs e)
                 {
                     var _data = newColumn.Tag as FormatValueDelegate;
                     if (_data != null && e.ColumnIndex == newColumn.Index && e.RowIndex >= 0)
                     {
                         var _value = _data.Invoke(dataGrid.Rows[e.RowIndex].DataBoundItem, newColumn.DataPropertyName);
                         if (_value != null)
                         {
                             e.Value             = _value;
                             e.FormattingApplied = _value is string;
                         }
                     }
                 };
             }
         }
     }
     dataGrid.DataSource = DataSource;
     dataGrid.ResumeLayout(false);
 }
 private void searchFirmaBtn_Click(object sender, EventArgs e)
 {
     var form = new SelectItemForm
     {
         Datas = Firma.GetAll().Cast<GestiuneObject>().ToList(),
         Text = "Cautare firma"
     };
     if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK)
         SelectedFirma = form.SelectedObject == null ? null : (Firma)form.SelectedObject;
 }
Exemple #11
0
        /// <summary>
        /// Fields generator that works on field data descriptions (FieldDataDescriptor)
        /// </summary>
        /// <param name="dataPanel">TableLayoutPanel</param>
        /// <param name="toolTip">ToolTip</param>
        /// <param name="DataSource">Data Source to support data-binding</param>
        /// <param name="Fields">Field data descriptors</param>
        public static void GenerateFields(this TableLayoutPanel dataPanel, ToolTip toolTip, object DataSource, params FieldDataDescriptor[] Fields)
        {
            dataPanel.SuspendLayout();
            dataPanel.Controls.Clear();
            if (DataSource == null || Fields == null || Fields.Length == 0)
            {
                return;
            }
            dataPanel.ColumnStyles.Clear();
            dataPanel.ColumnCount = 2;
            dataPanel.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
            dataPanel.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
            dataPanel.RowStyles.Clear();
            dataPanel.RowCount     = 0;
            dataPanel.AutoSize     = true;
            dataPanel.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            dataPanel.Margin       = new Padding(3, 3, 9, 3);

            int tabIndex = 0;

            foreach (var field in Fields)
            {
                dataPanel.RowCount += 1;
                dataPanel.RowStyles.Add(new RowStyle(SizeType.AutoSize));

                #region creating the label

                var leadLabel = new Label();
                leadLabel.Text      = field.CaptionText; // TODO: add option for generating label in format: column.CaptionText + ":"
                leadLabel.TextAlign = ContentAlignment.MiddleRight;
                leadLabel.Padding   = new Padding(0, 0, 0, 0);
                if (field.Mode == FieldEditorMode.MultilineTextBox || field.Mode == FieldEditorMode.BitMask || field.Mode == FieldEditorMode.BitMask64)
                {
                    leadLabel.Anchor = AnchorStyles.Right | AnchorStyles.Top;
                    leadLabel.Margin = new Padding(12, 6, 0, 6);
                }
                else
                {
                    leadLabel.Anchor = AnchorStyles.Right;
                    leadLabel.Margin = new Padding(12, 1, 0, 1);
                }
                leadLabel.TabIndex = tabIndex++;
                leadLabel.AutoSize = true;
                dataPanel.Controls.Add(leadLabel, 0, dataPanel.RowCount - 1);

                #endregion

                Binding binding = null;
                if (field.Mode == FieldEditorMode.TextBox || field.Mode == FieldEditorMode.MultilineTextBox || field.Mode == FieldEditorMode.DateTimeTextBox)
                {
                    #region creating editor control for text
                    var _textBox = new TextBox();
                    field.GeneratedControl = _textBox;
                    _textBox.Multiline     = field.Mode == FieldEditorMode.MultilineTextBox;
                    _textBox.Size          = new Size(field.SizeWidth.HasValue ? field.SizeWidth.Value : (int)DataDescriptorSizeWidth.Normal, _textBox.Multiline ? 125 : 20);
                    _textBox.Anchor        = AnchorStyles.Left;
                    if (field.MaxLength.HasValue)
                    {
                        _textBox.MaxLength = field.MaxLength.Value;
                    }
                    _textBox.TabIndex = tabIndex++;
                    if (toolTip != null)
                    {
                        toolTip.SetToolTip(_textBox, field.ColumnName);
                    }
                    leadLabel.Click += delegate { _textBox.Focus(); };
                    binding          = new Binding("Text", DataSource, field.ColumnName, true, field.IsReadOnly ? DataSourceUpdateMode.Never : DataSourceUpdateMode.OnPropertyChanged);
                    if (field.FormatValueMethod != null)
                    {
                        _textBox.Tag = field.FormatValueMethod;
                        binding.FormattingEnabled = true;
                        binding.Format           += TableLayoutPanelExtenders.BindingFormat;
                    }
                    if (field.IsNull)
                    {
                        binding.DataSourceNullValue = DBNull.Value;
                    }
                    if (field.NullValue != null)
                    {
                        binding.NullValue = field.NullValue;
                    }
                    if (field.Style.HasValue)
                    {
                        TableLayoutPanelExtenders.SetBindingStyle(binding, field.Style.Value);
                        _textBox.TextAlign = field.Style == EditorDataStyle.DateTime || field.Style == EditorDataStyle.Date ? HorizontalAlignment.Center : HorizontalAlignment.Right;
                    }
                    _textBox.DataBindings.Add(binding);
                    _textBox.ReadOnly = field.IsReadOnly;
                    if (field.DataSource != null && field.DataSource is string[])
                    {
                        _textBox.AutoCompleteMode         = AutoCompleteMode.SuggestAppend;
                        _textBox.AutoCompleteSource       = AutoCompleteSource.CustomSource;
                        _textBox.AutoCompleteCustomSource = new AutoCompleteStringCollection();
                        _textBox.AutoCompleteCustomSource.AddRange((string[])field.DataSource);
                    }
                    dataPanel.Controls.Add(_textBox, 1, dataPanel.RowCount - 1);
                    #endregion
                }
                else if (field.Mode == FieldEditorMode.NumberTextBox)
                {
                    #region creating editor control for numbers
                    var _textBox = new NumericUpDown();
                    field.GeneratedControl      = _textBox;
                    _textBox.Minimum            = field.Minimum.HasValue ? field.Minimum.Value : decimal.MinValue;
                    _textBox.Maximum            = field.Maximum.HasValue ? field.Maximum.Value : decimal.MaxValue;
                    _textBox.DecimalPlaces      = 0;
                    _textBox.ThousandsSeparator = true;
                    _textBox.Size     = new Size(field.SizeWidth.HasValue ? field.SizeWidth.Value : (int)DataDescriptorSizeWidth.Normal, 20);
                    _textBox.Anchor   = AnchorStyles.Left;
                    _textBox.TabIndex = tabIndex++;
                    if (toolTip != null)
                    {
                        toolTip.SetToolTip(_textBox, field.ColumnName);
                    }
                    leadLabel.Click += delegate { _textBox.Focus(); };
                    binding          = new Binding("Text", DataSource, field.ColumnName, true, field.IsReadOnly ? DataSourceUpdateMode.Never : DataSourceUpdateMode.OnPropertyChanged);
                    if (field.FormatValueMethod != null)
                    {
                        _textBox.Tag = field.FormatValueMethod;
                        binding.FormattingEnabled = true;
                        binding.Format           += TableLayoutPanelExtenders.BindingFormat;
                    }
                    if (field.IsNull)
                    {
                        binding.DataSourceNullValue = DBNull.Value;
                    }
                    if (field.NullValue != null)
                    {
                        binding.NullValue = field.NullValue;
                    }
                    if (field.Style.HasValue)
                    {
                        TableLayoutPanelExtenders.SetBindingStyle(binding, field.Style.Value);
                        _textBox.TextAlign = HorizontalAlignment.Right;
                    }
                    _textBox.DataBindings.Add(binding);
                    _textBox.ReadOnly = field.IsReadOnly;
                    dataPanel.Controls.Add(_textBox, 1, dataPanel.RowCount - 1);
                    #endregion
                }
                else if (field.Mode == FieldEditorMode.CheckBox)
                {
                    #region creating editor control for booleans
                    var _checkBox = new CheckBox();
                    field.GeneratedControl = _checkBox;
                    _checkBox.Anchor       = AnchorStyles.Left;
                    _checkBox.AutoSize     = false;
                    _checkBox.Size         = new Size(20, 20);
                    _checkBox.TabIndex     = tabIndex++;
                    if (toolTip != null)
                    {
                        toolTip.SetToolTip(_checkBox, field.ColumnName);
                    }
                    leadLabel.Click += delegate { _checkBox.Checked = !_checkBox.Checked; };
                    if (field.IsNull)
                    {
                        _checkBox.DataBindings.Add(new Binding("CheckState", DataSource, field.ColumnName, true, field.IsReadOnly ? DataSourceUpdateMode.Never : DataSourceUpdateMode.OnPropertyChanged, CheckState.Indeterminate));
                        _checkBox.ThreeState = true;
                    }
                    else
                    {
                        _checkBox.DataBindings.Add(new Binding("Checked", DataSource, field.ColumnName, false, field.IsReadOnly ? DataSourceUpdateMode.Never : DataSourceUpdateMode.OnPropertyChanged, false));
                    }
                    _checkBox.Enabled = !field.IsReadOnly;
                    dataPanel.Controls.Add(_checkBox, 1, dataPanel.RowCount - 1);
                    #endregion
                }
                else if (field.Mode == FieldEditorMode.ListBox)
                {
                    #region creating editor control for lists with dialog
                    var _comboBox = new ComboBox();
                    field.GeneratedControl = _comboBox;
                    _comboBox.Size         = new Size(field.SizeWidth.HasValue ? field.SizeWidth.Value : (int)DataDescriptorSizeWidth.Normal, 21);
                    _comboBox.Anchor       = AnchorStyles.Left;
                    if (field.MaxLength.HasValue)
                    {
                        _comboBox.MaxLength = field.MaxLength.Value;
                    }
                    _comboBox.TabIndex      = tabIndex++;
                    _comboBox.DropDownStyle = ComboBoxStyle.Simple;
                    if (toolTip != null)
                    {
                        toolTip.SetToolTip(_comboBox, field.ColumnName);
                    }
                    leadLabel.Click += delegate { _comboBox.Focus(); };
                    if (field.FormatValueMethod != null)
                    {
                        binding                   = new Binding("Text", DataSource, field.ColumnName, true, DataSourceUpdateMode.Never);
                        _comboBox.Tag             = field.FormatValueMethod;
                        binding.FormattingEnabled = true;
                        binding.Format           += TableLayoutPanelExtenders.BindingFormat;
                        if (field.IsNull)
                        {
                            binding.DataSourceNullValue = DBNull.Value;
                        }
                        _comboBox.DataBindings.Add(binding);
                    }
                    else
                    {
                        binding = new Binding("SelectedValue", DataSource, field.ColumnName, true, DataSourceUpdateMode.Never);
                        if (field.IsNull)
                        {
                            binding.DataSourceNullValue = DBNull.Value;
                        }
                        _comboBox.DataBindings.Add(binding);
                    }
                    _comboBox.DataSource = field.DataSource;
                    if (!string.IsNullOrWhiteSpace(field.ValueMember))
                    {
                        _comboBox.ValueMember = field.ValueMember;
                    }
                    if (!string.IsNullOrWhiteSpace(field.DisplayMember))
                    {
                        _comboBox.DisplayMember = field.DisplayMember;
                    }
                    _comboBox.Enabled = false;
                    if (field.IsReadOnly)
                    {
                        dataPanel.Controls.Add(_comboBox, 1, dataPanel.RowCount - 1);
                    }
                    else
                    {
                        var _pnl = new TableLayoutPanel();
                        _pnl.AutoSize     = true;
                        _pnl.AutoSizeMode = AutoSizeMode.GrowAndShrink;
                        _pnl.Margin       = new Padding(0);
                        _pnl.Padding      = new Padding(0);
                        _pnl.RowCount     = 1;
                        _pnl.ColumnCount  = 2;
                        _pnl.RowStyles.Add(new RowStyle(SizeType.AutoSize));
                        _pnl.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
                        _pnl.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
                        _pnl.Controls.Add(_comboBox, 0, 0);
                        var _btnSelect = new Button();
                        _btnSelect.Anchor       = AnchorStyles.Left;
                        _btnSelect.MaximumSize  = new Size(128, 128);
                        _btnSelect.Margin       = new Padding(1, 0, 1, 0);
                        _btnSelect.Padding      = new Padding(0);
                        _btnSelect.AutoSize     = true;
                        _btnSelect.AutoSizeMode = AutoSizeMode.GrowAndShrink;
                        _btnSelect.FlatStyle    = FlatStyle.Flat;
                        _btnSelect.FlatAppearance.BorderSize         = 0;
                        _btnSelect.FlatAppearance.MouseOverBackColor = SystemColors.GradientActiveCaption;
                        _btnSelect.FlatAppearance.MouseDownBackColor = SystemColors.ControlLight;
                        _btnSelect.Image      = Settings.Images.SelectRowImage;
                        _btnSelect.ImageAlign = ContentAlignment.MiddleCenter;
                        _btnSelect.TextAlign  = ContentAlignment.MiddleCenter;
                        _btnSelect.TabIndex   = tabIndex++;
                        _btnSelect.TabStop    = false;
                        if (toolTip != null)
                        {
                            toolTip.SetToolTip(_btnSelect, string.Format("Select a value for {0}", field.ColumnName));
                        }
                        _pnl.Controls.Add(_btnSelect, 1, 0);
                        _comboBox.Size    = new Size((field.SizeWidth.HasValue ? field.SizeWidth.Value : (int)DataDescriptorSizeWidth.Normal) - _btnSelect.Width - _btnSelect.Margin.Left - _btnSelect.Margin.Right - _comboBox.Margin.Right, _comboBox.Height);
                        _btnSelect.Click += delegate(object sender, EventArgs e)
                        {
                            var cm = binding.BindingManagerBase;
                            if (cm != null)
                            {
                                try
                                {
                                    var col = cm.GetItemProperties().Find(field.ColumnName, false);
                                    if (col != null)
                                    {
                                        object items = field.DataSource;
                                        bool   agc   = false;
                                        if (field.GetListBoxItemsMethod != null)
                                        {
                                            items = field.GetListBoxItemsMethod.Invoke();
                                            if (items == null)
                                            {
                                                FormServices.ShowError("No data exists", true);
                                                return;
                                            }
                                            agc = true;
                                        }
                                        var row = SelectItemForm.GetSelectedRow(items, field.ValueMember, field.DisplayMember, col.GetValue(cm.Current), agc);
                                        if (row != null)
                                        {
                                            col.SetValue(cm.Current, row[field.ValueMember]);
                                            cm.EndCurrentEdit();
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    FormServices.ShowError(ex);
                                    cm.CancelCurrentEdit();
                                }
                            }
                        };
                        dataPanel.Controls.Add(_pnl, 1, dataPanel.RowCount - 1);
                    }
                    #endregion
                }
                else if (field.Mode == FieldEditorMode.ComboBox || field.Mode == FieldEditorMode.ComboTextBox)
                {
                    #region creating editor control for drop down lists
                    var _comboBox = new ComboBox();
                    field.GeneratedControl = _comboBox;
                    _comboBox.Size         = new Size(field.SizeWidth.HasValue ? field.SizeWidth.Value : (int)DataDescriptorSizeWidth.Normal, 20);
                    _comboBox.Anchor       = AnchorStyles.Left;
                    if (field.MaxLength.HasValue)
                    {
                        _comboBox.MaxLength = field.MaxLength.Value;
                    }
                    _comboBox.TabIndex      = tabIndex++;
                    _comboBox.DropDownStyle = field.Mode == FieldEditorMode.ComboBox ? ComboBoxStyle.DropDownList : ComboBoxStyle.DropDown;
                    if (toolTip != null)
                    {
                        toolTip.SetToolTip(_comboBox, field.ColumnName);
                    }
                    leadLabel.Click += delegate { _comboBox.Focus(); if (_comboBox.Enabled)
                                                  {
                                                      _comboBox.DroppedDown = true;
                                                  }
                    };
                    binding = new Binding(field.Mode == FieldEditorMode.ComboBox ? "SelectedValue" : "Text", DataSource, field.ColumnName, true, field.IsReadOnly ? DataSourceUpdateMode.Never : DataSourceUpdateMode.OnPropertyChanged);
                    if (field.IsNull)
                    {
                        binding.DataSourceNullValue = DBNull.Value;
                    }
                    _comboBox.DataBindings.Add(binding);
                    _comboBox.DataSource = field.DataSource;
                    if (!string.IsNullOrWhiteSpace(field.ValueMember))
                    {
                        _comboBox.ValueMember = field.ValueMember;
                    }
                    if (!string.IsNullOrWhiteSpace(field.DisplayMember))
                    {
                        _comboBox.DisplayMember = field.DisplayMember;
                    }
                    _comboBox.Enabled = !field.IsReadOnly;
                    if (field.Mode == FieldEditorMode.ComboTextBox)
                    {
                        _comboBox.AutoCompleteMode   = AutoCompleteMode.Append;
                        _comboBox.AutoCompleteSource = AutoCompleteSource.ListItems;
                    }
                    dataPanel.Controls.Add(_comboBox, 1, dataPanel.RowCount - 1);
                    #endregion
                }
                else if (field.Mode == FieldEditorMode.GuidEditor)
                {
                    #region creating editor control for Guid
                    var _textBox = new TextBox();
                    field.GeneratedControl = _textBox;
                    _textBox.Size          = new Size((int)DataDescriptorSizeWidth.Normal, 20);
                    _textBox.Anchor        = AnchorStyles.Left;
                    _textBox.TabIndex      = tabIndex++;
                    if (toolTip != null)
                    {
                        toolTip.SetToolTip(_textBox, field.ColumnName);
                    }
                    leadLabel.Click += delegate { _textBox.Focus(); };
                    if (DataSource != null)
                    {
                        _textBox.DataBindings.Add(new Binding("Text", DataSource, field.ColumnName, true, DataSourceUpdateMode.Never, "(null)"));
                    }
                    _textBox.ReadOnly = true;
                    dataPanel.Controls.Add(_textBox, 1, dataPanel.RowCount - 1);
                    #endregion
                }
                else if (field.Mode == FieldEditorMode.BitMask || field.Mode == FieldEditorMode.BitMask64)
                {
                    #region creating editor control for mask (bits)
                    var _listBox = new BitMaskCheckedListBox();
                    field.GeneratedControl = _listBox;
                    _listBox.Size          = new Size(field.SizeWidth.HasValue ? field.SizeWidth.Value : (int)DataDescriptorSizeWidth.Normal, 150);
                    _listBox.Anchor        = AnchorStyles.Left;
                    _listBox.TabIndex      = tabIndex++;
                    if (toolTip != null)
                    {
                        toolTip.SetToolTip(_listBox, field.ColumnName);
                    }
                    leadLabel.Click += delegate { _listBox.Focus(); };
                    binding          = new Binding(field.Mode == FieldEditorMode.BitMask ? "Value" : "LongValue", DataSource, field.ColumnName, true, field.IsReadOnly ? DataSourceUpdateMode.Never : DataSourceUpdateMode.OnPropertyChanged);
                    if (field.IsNull)
                    {
                        binding.DataSourceNullValue = DBNull.Value;
                    }
                    if (field.NullValue != null)
                    {
                        binding.NullValue = field.NullValue;
                    }
                    if (field.Style.HasValue)
                    {
                        TableLayoutPanelExtenders.SetBindingStyle(binding, field.Style.Value);
                    }
                    _listBox.DataBindings.Add(binding);
                    _listBox.Enabled = !field.IsReadOnly;
                    if (field.DataSource != null)
                    {
                        if (field.DataSource is string[])
                        {
                            _listBox.Items.AddRange((string[])field.DataSource);
                            if (_listBox.Items.Count > 0)
                            {
                                var _nHeight = _listBox.Items.Count * (_listBox.GetItemHeight(0) + 4) + 1;
                                if (_nHeight < _listBox.Size.Height)
                                {
                                    _listBox.Size = new Size(_listBox.Size.Width, _nHeight);
                                }
                            }
                        }
                        else
                        {
                            _listBox.DataSource    = field.DataSource;
                            _listBox.DisplayMember = field.DisplayMember;
                        }
                    }
                    dataPanel.Controls.Add(_listBox, 1, dataPanel.RowCount - 1);
                    #endregion
                }
                if (field.IsNull && !field.IsReadOnly && field.Mode != FieldEditorMode.CheckBox || field.Mode == FieldEditorMode.GuidEditor)
                {
                    #region button for clear value
                    if (dataPanel.ColumnCount == 2)
                    {
                        dataPanel.ColumnCount = 3;
                        dataPanel.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
                    }
                    var _btnClear = new Button();
                    _btnClear.Anchor = AnchorStyles.Left;
                    if (field.Mode == FieldEditorMode.MultilineTextBox)
                    {
                        _btnClear.Anchor |= AnchorStyles.Top;
                    }
                    _btnClear.MaximumSize  = new Size(128, 128);
                    _btnClear.Margin       = new Padding(1, 0, 1, 0);
                    _btnClear.Padding      = new Padding(0);
                    _btnClear.AutoSize     = true;
                    _btnClear.AutoSizeMode = AutoSizeMode.GrowAndShrink;
                    _btnClear.FlatStyle    = FlatStyle.Flat;
                    _btnClear.FlatAppearance.BorderSize         = 0;
                    _btnClear.FlatAppearance.MouseOverBackColor = SystemColors.GradientActiveCaption;
                    _btnClear.FlatAppearance.MouseDownBackColor = SystemColors.ControlLight;
                    _btnClear.Image      = Settings.Images.ClearFieldImage;
                    _btnClear.ImageAlign = ContentAlignment.MiddleCenter;
                    _btnClear.TextAlign  = ContentAlignment.MiddleCenter;
                    _btnClear.TabIndex   = tabIndex++;
                    _btnClear.TabStop    = false;
                    if (toolTip != null)
                    {
                        toolTip.SetToolTip(_btnClear, string.Format("Clear value from {0}", field.ColumnName));
                    }
                    _btnClear.Click += delegate
                    {
                        var cm = binding.BindingManagerBase;
                        if (cm != null)
                        {
                            try
                            {
                                var col = cm.GetItemProperties().Find(binding.BindingMemberInfo.BindingMember, false);
                                if (col != null && cm.Count > 0)
                                {
                                    col.SetValue(cm.Current, DBNull.Value);
                                }
                                cm.EndCurrentEdit();
                                binding.Control.Focus();
                            }
                            catch (Exception ex)
                            {
                                FormServices.ShowError(ex);
                                cm.CancelCurrentEdit();
                            }
                        }
                    };
                    dataPanel.Controls.Add(_btnClear, 2, dataPanel.RowCount - 1);
                    #endregion
                }
            }
            dataPanel.ResumeLayout(false);
        }