Användargränssnitt med Wimark Controls  

Kontrollerna NumericUpDown & DomainUpDown

Kontrollerna NumericUpDown och DomainUpDown används för inmatning av numeriska tal och text. Kontrollerna består av en textyta där användaren fritt kan skriva in numeriska tal eller text. Till höger finns två knappar för att ändra innehållet mellan förbestämda värden. NumericUpDown ändrar talet mellan en övre och undre gräns. Steglängden bestäms av kontrollen. DomainUpDown ändrar texten mellan fixa val från en lista.

Textytan och knapparna omges ofta av en ram. Texten kan justeras horisontellt och knapparna kan layoutas både till höger och vänster.

NumericUpDown och DomainUpDown

Bilden visar en NumericUpDown och en DomainUpDown kontroll.


Tal eller text som skrivs in manuellt valideras inte av kontrollen. Detta gör att man själv kan bestämma feltexten i valideringsmeddelanden. Texten valideras lämpligast från OnValidating metoden i kontrollen.

Programmeringsgränssnittet liknar i stort sett motsvarande kontroll i Microsoft .NET.


Validering av NumericUpDown:

// Validates the entered text in the up-down control (C#)
protected override void OnValidating(CancelEventArgs e) {
  base.OnValidating(e);

  // Validate when the text is modified by the user.
  if (Modified) {    

    // Parse the text.
    decimal textValue = 0;
    try {
      if (hexadecimal) {
        textValue = int.Parse(Text, GetNumberStyles());
      } else {
        textValue = decimal.Parse(Text, GetNumberStyles());
      }
    } catch {

    // The text couldn't be parsed to a valid number.
    MessageBox.Show("The entered text could not be converted to a valid number.");
      e.Cancel = true;
      Select(0, Text.Length);
      return;
    }

    // Check the maximum and minimum limits.
    if (textValue < minimum) {
      MessageBox.Show("The entered text is less than the minimum value.");
      e.Cancel = true;
      Select(0, Text.Length);
      return;
    }
    if (textValue > maximum) {
      MessageBox.Show("The entered text is larger than the maximum value.");
      e.Cancel = true;
      Select(0, Text.Length);
      return;
    }

    // Update the value.
    Value = textValue;
    Modified = false;
  }
}

Validering av DomainUpDown:

// Validates the entered text in the up-down control (C#)
protected override void OnValidating(CancelEventArgs e) {
  base.OnValidating(e);

  // Validate when the text is modified by the user.
  if (Modified) {  

    // Check if the text is null.
    if (Text == null || Text.Length == 0) {
      SelectedItem = null;
      Modified = false;
      return;
    }

    // Find the item.
    DomainUpDownItem item = FindItem(Text);
    if (item == null) {

      // No item could be found.
      MessageBox.Show("The entered text is not a valid value.");
      e.Cancel = true;
      Select(0, Text.Length);
      return;
    } 

    // Update the value.
    SelectedItem = item;
    Modified = false;
  }
}

Kort beskrivning av klasserna:

Klass Beskrivning
NumericUpDown Representerar en kontroll som används för inmatning av numeriska tal.
DomainUpDown Representerar en kontroll som används för inmatning av text där användaren guidas av en lista med fixa val. Valen representeras av DomainUpDownItem objekt.
DomainUpDownItem Representerar ett val i listan i DomainUpDown kontrollen.
DomainUpDown.DomainUpDownItemCollection Representerar en lista DomainUpDownItem objekt.
UpDownBase Basklass för kontrollerna NumericUpDown och DomainUpDown.

För mer information

Wimark.Controls Namespace | NumericUpDown Class | DomainUpDown Class