2013-02-25 21 views
5

Jestem nowy w .Net Framework i chcę dodać poprawności do mojej aplikacji formularza systemu Windows w Visual Studio 2010 IDE. Szukałem różnych sposobów, aby to zrobić, ale nie jestem pewien, gdzie mogę dodać ten kod w mojej formie? Jednym z przykładów jest poniższy kod.Sprawdzanie poprawności mojego formularza

Czy mogę dodać ten kod w metodzie ładowania formularza lub w przycisku przesyłania lub w innym miejscu?

using System; 
using System.Data.Entity; 
using System.ComponentModel.DataAnnotations; 

namespace MvcMovie.Models 
{ 
    public class Movie 
    { 
     public int ID { get; set; } 

     [Required(ErrorMessage = "Title is required")] 
     public string Title { get; set; } 

     [Required(ErrorMessage = "Date is required")] 
     public DateTime ReleaseDate { get; set; } 

     [Required(ErrorMessage = "Genre must be specified")] 
     public string Genre { get; set; } 

     [Required(ErrorMessage = "Price Required")] 
     [Range(1, 100, ErrorMessage = "Price must be between $1 and $100")] 
     public decimal Price { get; set; } 

     [StringLength(5)] 
     public string Rating { get; set; } 
    } 

    public class MovieDBContext : DbContext 
    { 
     public DbSet<Movie> Movies { get; set; } 
    } 
} 
+0

Chyba zależy to od przypadek użycia tutaj. Jeśli chcesz, aby wszystkie walidacje pojawiały się lub działały podczas ładowania formularza, wtedy zdarzenia OnLoad lub OnShown. – Zenwalker

+0

Próbujesz wdrożyć w sposób ASP.Net MVC. Sprawdź, jak można to zrobić w formularzach Windows. –

+0

Nie chcę używać asp.net, ale prostą implementację przy użyciu C#. Jak mogę dodać sprawdzanie poprawności w polach tekstowych, aby upewnić się, że użytkownik wprowadza tylko alfabet i inne pole tekstowe dla numeru telefonu, który akceptuje tylko liczby i "+", "-" od użytkownika? –

Odpowiedz

1

Spróbuj utworzyć niestandardową TextBox z własności publicznej ControlType (takie jak numer, tekst) i wszystko, a następnie napisać implementację dla każdego typu. Próbka kodu podana poniżej.

class CustomTextbox : TextBox 
{ 
    private ControlType _controlType; 

    public CustomTextbox() 
    { 
     Controltype = ControlType.Number; 
    } 

    public ControlType Controltype 
    { 
     get { return _controlType; } 
     set 
     { 
      switch (value) 
      { 
       case ControlType.Number: 
        KeyPress += textboxNumberic_KeyPress; 
        MaxLength = 13; 
        break; 

       case ControlType.Text: 
        KeyPress += TextboxTextKeyPress; 
        MaxLength = 100; 
        break; 
      } 
      _controlType = value; 
     } 
    } 

    private void textboxNumberic_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     const char delete = (char)8; 
     const char plus = (char)43; 
     e.Handled = !Char.IsDigit(e.KeyChar) && e.KeyChar != delete && e.KeyChar != plus; 
    } 

    private void TextboxTextKeyPress(object sender, KeyPressEventArgs e) 
    { 
     const char delete = (char)8; 
     const char plus = (char)43; 
     e.Handled = Char.IsDigit(e.KeyChar); 
    } 

} 

public enum ControlType 
{ 
    Number, 
    Text, 
} 

Zbuduj swoje rozwiązanie. Wybierz nowo utworzoną formant z Toolbox. Przeciągnij w formularzu, a następnie zmień właściwość ControlType z Property Window. Przykład pokazuje tylko liczbę i tekst, ale możesz rozszerzyć rzeczy o telefon, e-mail i inne.

Edit

Może również domyślny tag w enum które sprawiają, że normalne Textbox. W takim przypadku nie zapomnij usunąć zdarzeń.

Mam nadzieję, że to pomaga.

+0

Nie można znaleźć właściwości ControlType w oknie właściwości. –

+0

Zbuduj swoje rozwiązanie, gdy już będziesz w projekcie Form. – Sandy

+0

Już mam, ale wciąż nie mogę tego zobaczyć. Czy możesz dokładnie określić, gdzie dokładnie w nieruchomości? –

0

Chyba ty powinien użyć interfejsu IDataErrorInfo (patrz here)

Here jest przykładem tego, jak wdrożyć go

To idzie tak:

public class Movie : IDataErrorInfo 
{ 
    public int ID { get; set; } 

    //other properties removed for clearyfication 

     private string _lastError = ""; 

     public string Error 
     { 
      get { return _lastError; } 
     } 

     public string this[string columnName] 
     { 
      get 
      { 
       if(columnName == "ID" && ID < 0) 
       _lastError = "Id must be bigger that zero"; 
      } 
     } 

} 
Powiązane problemy