Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

C# DataGridView DataError event

Pagina: 1
Acties:

  • Marc.O
  • Registratie: Maart 2013
  • Laatst online: 03-03-2024
Beste Tweakers,

Ik ben bezig een met het parse van data in een datagridview. Ik wil dat er een error/warning komt wanneer een user meer dan 4 digits opgeeft. Ik heb iets dat werkt:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
private void DataGridViewBlockParametersCellParsing(object sender, DataGridViewCellParsingEventArgs e)
        {
            if (dataGridViewBlockParameters.Columns[e.ColumnIndex].Name == "ParamHexColumn")
            {
                // Convert user input to Hexadecimal
                if (e.Value != null) //&& e.DesiredType.Equals(typeof(UInt16))
                {
                    try
                    {
                        if (e.Value.ToString().Length <= 4)
                        {
                            e.Value = UInt16.Parse(e.Value.ToString(), System.Globalization.NumberStyles.AllowHexSpecifier);
                            e.ParsingApplied = true;
                            editCancelled = false;
                        }
                        else
                        {
                            MessageBox.Show("Hexadecimal values cannot be longer than 4 digits.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            e.Value = previousCellValue;
                            editCancelled = true;
                        }
                    }
                    catch
                    {
                        // Input was not Hexadecimal
                        // Will be caught in dataGridViewBlockParameters_DataError event
                    }
                }
            }
        }


Zoals je ziet wordt er al gebruik gemaakt van het dataerror event als het parse van een <= 4 digit getal mis gaat.
Nu wil ik het zo maken dat mijn groter dan 4 digits warning ook in dit event komt (kan dat?).
Ik kan op google alleen voorbeelden vinden van het afhandelen van het event.
Ik heb al geprobeerd FormatException te gooien op de plek waar nu de message box staat.

C#:
1
throw new FormatException("Hexadecimal values cannot be longer than 4 digits.");


Dat werkt helaas niet. Weet iemand of het uberhaubt kan en zo ja heeft iemand een linkje waar ik meer info kan vinden?

Verwijderd

Ik zou het volgende voorstellen, misschien wel iets meer werk maar uiteindelijk wel meer plezier van denk ik?

1: Een custom control maken, een textbox die alleen (hexa)decimale input accepteert en geen invoer meer accepteert na 4 tekens. (of misschien een custom property maken? (max allowed?))

2: Een custom datagridview cell maken die je kunt gebruiken in je datagridview.

Hier een voorbeeld hoe custom controls te hosten in een datagridview: MSDN: How to: Host Controls in Windows Forms DataGridView Cells

Zelf heb ik het een hele tijd geleden gebruikt om een decimaal textbox te hosten in een datagridview.

  • Marc.O
  • Registratie: Maart 2013
  • Laatst online: 03-03-2024
Bedankt! Ik zal er is naar kijken.