public override string ToString()
            {
                DocumentQueryProperty property = _queryProperties.FirstOrDefault(n => n.Name == Criteria.PropertyName);
                string label          = property?.Label ?? Criteria.PropertyName;
                string operatorString = _operatorStrings[Criteria.QueryOperator];

                return($"{label} {operatorString} {string.Join(", ", Criteria.Values)}");
            }
        private void RefreshOperatorList(DocumentQueryProperty property)
        {
            operator_ListBox.DataSource = null;

            if (property != null)
            {
                operator_ListBox.DataSource = property.Operators.Select(n => _operatorStrings[n]).ToList();
                if (operator_ListBox.Items.Count > 0)
                {
                    operator_ListBox.SelectedIndex = 0;
                }
            }
        }
        private void RefreshValues(DocumentQueryProperty property, QueryOperator selectedOperator)
        {
            HideAllControls();

            if (property.Values != null && property.Values.Count > 0)
            {
                EnableValuesListBox(selectedOperator);
            }
            else
            {
                EnableValuesTextBoxes(selectedOperator);
            }
        }
        private DocumentQueryCriteria CreateCriteria()
        {
            DocumentQueryProperty queryProperty = property_ListBox.SelectedItem as DocumentQueryProperty;
            QueryOperator         queryOperator = _operatorStrings.First(n => n.Value == (string)operator_ListBox.SelectedItem).Key;
            Collection <object>   values        = new Collection <object>();

            if (values_ListBox.Visible)
            {
                foreach (string item in values_ListBox.SelectedItems)
                {
                    values.Add(item);
                }
            }
            else if (value1_TextBox.Visible)
            {
                values.Add(value1_TextBox.Text);
                if (value2_TextBox.Visible)
                {
                    values.Add(value2_TextBox.Text);
                }
            }

            return(new DocumentQueryCriteria(queryProperty, queryOperator, values));
        }
 private void property_ListBox_SelectedValueChanged(object sender, EventArgs e)
 {
     _currentProperty = property_ListBox.SelectedItem as DocumentQueryProperty;
     RefreshOperatorList(_currentProperty);
 }