2014-01-14 2 views
3

winform에 usercontrol을 추가하려고합니다. 내가 시도winform에 usercontrol을 추가하는 중 오류가 발생했습니다.

enter image description here

양식 및 UserControl을 모두 재현하는 것이 아니라 오류가 나타나지 유지 : 나는이 작업을 수행하려고하면 오류가 발생합니다. 내 프로젝트를 이런 방식으로 계속할 수 없기 때문에 정말 귀찮게되었습니다.

어떻게 해결할 수 있습니까?

편집 : usercontrol 및 양식에 대해 여러 가지 다른 이름을 사용했습니다. 또한 Visual Studio를 다시 시작해도 도움이되지 않았습니다.

Edit2가 :

public partial class ucLeed : UserControl 
{ 
    ErrorProvider error = new ErrorProvider(); 
    DBLid DBlid = new DBLid(); 
    public ucLeed() 
    { 
     InitializeComponent(); 
     error.BlinkStyle = ErrorBlinkStyle.NeverBlink; 
    } 

    string lidID; 

    public string LidID 
    { 
     get { return lidID; } 
     set { lidID = value; } 
    } 

    public string Achternaam 
    { 
     get { return tbAchternaam.Text; } 
     set { tbAchternaam.Text = value; } 
    } 

    public string Adres 
    { 
     get { return tbStraat.Text; } 
     set { tbStraat.Text = value; } 
    } 

    public string Email 
    { 
     get { return tbEmail.Text; } 
     set { tbEmail.Text = value; } 
    } 

    public string Geboortedatum 
    { 
     get { return tbGeboortedatum.Text; } 
     set { tbGeboortedatum.Text = value; } 
    } 

    public string Gebruikersnaam 
    { 
     get { return tbGebruikersnaam.Text; } 
     set { tbGebruikersnaam.Text = value; } 
    } 

    public string Voornaam 
    { 
     get { return tbVoornaam.Text; } 
     set { tbVoornaam.Text = value; } 
    } 

    public string Wachtwoord 
    { 
     get { return tbPassword.Text; } 
     set { tbPassword.Text = value; } 
    } 

    public string BevWachtwoord 
    { 
     get { return tbPassBev.Text; } 
     set { tbPassBev.Text = value; } 
    } 

    public string Woonplaats 
    { 
     get { return tbWoonplaats.Text; } 
     set { tbWoonplaats.Text = value; } 
    } 

    public string Postcode 
    { 
     get { return tbPostcode.Text; } 
     set { tbPostcode.Text = value; } 
    } 

    private void CheckInput(CancelEventArgs e, TextBox tb) 
    { 

     if (string.IsNullOrEmpty(tb.Text)) 
     { 
      error.SetError(tb, "*"); 
      e.Cancel = true; 
     } 

     if (!string.IsNullOrEmpty(tb.Text)) 
     { 
      error.SetError(tb, String.Empty); 
      error.Clear(); 
      error.Dispose(); 
     } 
    } 

    private void CheckIntInput(CancelEventArgs e, TextBox tb) 
    { 
     int integer; 
     if (int.TryParse(tb.Text, out integer)) 
     { 
      error.SetError(tb, String.Empty); 
      error.Clear(); 
      error.Dispose(); 
     } 
     else 
     { 
      MessageBox.Show("Je moet een getal invullen!"); 
      tb.Focus(); 
      error.SetError(tb, "*"); 
     } 
    } 

    private void CheckDateInput(CancelEventArgs e, TextBox tb) 
    { 
     string date = tb.Text; 
     DateTime fromDateValue; 
     var formats = new[] { "dd/MM/yyyy", "dd-MM-yyyy" }; 
     if (DateTime.TryParseExact(date, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out fromDateValue)) 
     { 
      error.SetError(tb, String.Empty); 
      error.Clear(); 
      error.Dispose(); 
     } 
     else 
     { 
      MessageBox.Show("Je moet wel een datum invullen!"); 
      tb.Focus(); 
      error.SetError(tb, "*"); 
     } 
    } 

    private void ComparePasswords(CancelEventArgs e, MaskedTextBox tb, MaskedTextBox tb2) 
    { 
     if (tb.Text != tb2.Text) 
     { 
      MessageBox.Show("Je hebt niet het juiste wachtwoord bevestigd!"); 
      error.SetError(tb2, "*"); 
     } 
     else 
     { 
      error.SetError(tb2, String.Empty); 
      error.Clear(); 
      error.Dispose(); 
     } 
    } 

    private void tbVoornaam_Validating(object sender, CancelEventArgs e) 
    { 
     CheckInput(e, (TextBox)sender); 
    } 

    private void tbPassBev_Validating(object sender, CancelEventArgs e) 
    { 
     ComparePasswords(e, (MaskedTextBox)tbPassword, (MaskedTextBox)sender); 
    } 

    private void tbEmail_Validating(object sender, CancelEventArgs e) 
    { 
     try 
     { 
      var email = new MailAddress(tbEmail.Text); 
      error.SetError(tbEmail, String.Empty); 
      error.Clear(); 
      error.Dispose(); 
     } 
     catch 
     { 
      MessageBox.Show("Verkeerde formaat email adres!"); 
      error.SetError(tbEmail, "*"); 
     } 
    } 

    private void tbGeboortedatum_Validating(object sender, CancelEventArgs e) 
    { 
     CheckDateInput(e, (TextBox)sender); 
    } 

    private void tbGebruikersnaam_Validating(object sender, CancelEventArgs e) 
    { 
     if (DBlid.CheckLid(tbGebruikersnaam.Text)) 
     { 
      MessageBox.Show("Gebruikersnaam al in gebruik!"); 
      this.Focus(); 
      error.SetError(tbGebruikersnaam, "*"); 
     } 
    } 
} 

EDIT3 : 클래스 DBLid의 코드

UcLeed 다음 코드를 포함합니다.

class DBLid 
{ 
    DBChecks DBChecks = new DBChecks(); 

    bool querystatus = false; 

    public bool Querystatus 
    { 
     get { return querystatus; } 
     set { querystatus = value; } 
    } 
    string connectionString = ConfigurationManager.ConnectionStrings["Insomnia.Properties.Settings.dbInsomniaConnectionString"].ConnectionString; 

    public DataTable GetLeden() 
    { 
     DataTable DT = new DataTable(); 
     SqlCommand cmd = new SqlCommand(); 
     SqlConnection conn = new SqlConnection(connectionString); 
     cmd.Connection = conn; 
     cmd.CommandText = "SELECT Lid.Id, Lid.Achternaam, Lid.Voornaam, Lid.Email, Lid.Adres, Lid.Woonplaats, Lid.Postcode, convert(varchar, Lid.Geboortedatum, 101) AS 'Geboorte Datum', Lid.GebruikersNaam AS Gebruikersnaam FROM Lid"; 
     SqlDataAdapter sda = new SqlDataAdapter(cmd); 
     sda.Fill(DT); 
     return DT; 
    } 

    public bool CheckLid(string gebruikersnaam) 
    { 
     bool inUse = false; 
     SqlCommand cmd = new SqlCommand(); 
     SqlConnection conn = new SqlConnection(connectionString); 
     cmd.Connection = conn; 
     cmd.Parameters.AddWithValue("gebruikersnaam", gebruikersnaam); 
     cmd.CommandText = "SELECT COUNT(Lid.ID) FROM Lid WHERE GebruikersNaam = @gebruikersnaam"; 
     try 
     { 
      conn.Open(); 
      if ((int)cmd.ExecuteScalar() == 1) 
      { 
       inUse = true; 
      } 
      else 
      { 
       inUse = false; 
      } 
     } 

     catch 
     { 

     } 
     finally 
     { 
      conn.Close(); 
     } 

     return inUse; 
    } 

    public void AddLid(string achternaam, string adres, string email, string geboortedatum, string gebruikersnaam, string voornaam, string wachtwoord, string woonplaats, string postcode) 
    { 
     // Encrypt password 
     string encryptedPassword = DBChecks.encryptPassword(wachtwoord); 

     SqlCommand cmd = new SqlCommand(); 
     SqlConnection conn = new SqlConnection(connectionString); 
     cmd.Connection = conn; 

     cmd.Parameters.AddWithValue("achternaam", achternaam); 
     cmd.Parameters.AddWithValue("adres", adres); 
     cmd.Parameters.AddWithValue("email", email); 
     cmd.Parameters.AddWithValue("geboortedatum", geboortedatum); 
     cmd.Parameters.AddWithValue("gebruikersnaam", gebruikersnaam); 
     cmd.Parameters.AddWithValue("voornaam", voornaam); 
     cmd.Parameters.AddWithValue("woonplaats", woonplaats); 
     cmd.Parameters.AddWithValue("postcode", postcode); 
     cmd.Parameters.AddWithValue("wachtwoord", encryptedPassword); 

     cmd.CommandText = "INSERT INTO Lid (Achternaam, Adres, Email, GeboorteDatum, GebruikersNaam, Voornaam, Wachtwoord, Woonplaats, Postcode) VALUES (@achternaam, @adres, @email, @geboortedatum, @gebruikersnaam, @voornaam, @wachtwoord, @woonplaats, @postcode); SELECT CONVERT(int, SCOPE_IDENTITY());"; 
     try 
     { 
      conn.Open(); 
      int lidID = (int)cmd.ExecuteScalar(); 
      MessageBox.Show("Het lid is toegevoegd met LidID: " + lidID); 
      querystatus = true; 
     } 

     catch 
     { 
      MessageBox.Show("Oeps! Er ging iets mis!"); 
      querystatus = false; 
     } 
     finally { 
      conn.Close(); 
     } 
    } 
} 

편집 4 : 참조 용 DBChecks가 추가되었습니다.

class DBChecks 
{ 
    bool reserveerStatus; 

    public bool ReserveerStatus 
    { 
     get { return reserveerStatus; } 
     set { reserveerStatus = value; } 
    } 

    bool querystatus = false; 

    public bool QueryStatus 
    { 
     get { return querystatus; } 
     set { querystatus = value; } 
    } 
    int gameID; 

    public int GameID 
    { 
     get { return gameID; } 
     set { gameID = value; } 
    } 
    int boekID; 

    public int BoekID 
    { 
     get { return boekID; } 
     set { boekID = value; } 
    } 

    private int itemsoort; 

    public int Itemsoort 
    { 
     get { return itemsoort; } 
     set { itemsoort = value; } 
    } 

    string connectionString = ConfigurationManager.ConnectionStrings["Insomnia.Properties.Settings.dbInsomniaConnectionString"].ConnectionString; 

    public string encryptPassword(string uncryptedPassword) 
    { 

     HashAlgorithm hash = new SHA256Managed(); 
     string salt = "UserName"; 

     // compute hash of the password prefixing password with the salt 
     byte[] plainTextBytes = Encoding.UTF8.GetBytes(salt + uncryptedPassword); 
     byte[] hashBytes = hash.ComputeHash(plainTextBytes); 

     string hashValue = Convert.ToBase64String(hashBytes); 
     return hashValue; 

    } 

    public bool ReserveringStatus(int itemID) 
    { 

     SqlConnection conn = new SqlConnection(connectionString); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Parameters.AddWithValue("itemID", itemID); 
     cmd.Connection = conn; 
     cmd.CommandText = "SELECT ReserveerStatus FROM Item WHERE Id = @itemID"; 

     try 
     { 
      conn.Open(); 
      SqlDataReader sdr = cmd.ExecuteReader(); 

      while (sdr.Read()) 
      { 
       reserveerStatus = (bool)sdr["ReserveerStatus"]; 
      } 
     } 

     catch 
     { 
      MessageBox.Show("Oeps! Er ging iets mis!"); 
     } 

     finally 
     { 
      conn.Close(); 
     } 

     return reserveerStatus; 
    } 

    public int CheckLid(int lidID) 
    { 
     int aantal = 0; 
     SqlConnection conn = new SqlConnection(connectionString); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Parameters.AddWithValue("lidID", lidID); 
     cmd.Connection = conn; 
     cmd.CommandText = "SELECT COUNT(*) AS Aantal FROM Lid WHERE Id = @lidID"; 

     try 
     { 
      conn.Open(); 
      SqlDataReader sdr = cmd.ExecuteReader(); 

      while (sdr.Read()) 
      { 
       aantal = (int)sdr["Aantal"]; 
      } 
     } 

     catch 
     { 
      MessageBox.Show("Oeps! Er ging iets mis!"); 
     } 

     finally 
     { 
      conn.Close(); 
     } 
     return aantal; 
    } 
    public int CheckPas(int pasID) 
    { 
     int aantal = 0; 
     SqlConnection conn = new SqlConnection(connectionString); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Parameters.AddWithValue("pasID", pasID); 
     cmd.Connection = conn; 
     cmd.CommandText = "SELECT COUNT(*) AS Aantal FROM Pas WHERE Id = @pasID"; 

     try 
     { 
      conn.Open(); 
      SqlDataReader sdr = cmd.ExecuteReader(); 

      while (sdr.Read()) 
      { 
       aantal = (int)sdr["Aantal"]; 
      }     
     } 

     catch 
     { 
      MessageBox.Show("Oeps! Er ging iets mis!"); 
     } 

     finally 
     { 
      conn.Close(); 
     } 
     return aantal; 
    } 

    public void CheckSoort(int itemID) 
    { 
     // Variable declaration 
     string soort = ""; 
     List<Boek> boek = new List<Boek>(); 
     SqlConnection conn = new SqlConnection(connectionString); 
     SqlCommand cmd = new SqlCommand(); 

     // Check if ItemID is boek or game 
     cmd.Parameters.AddWithValue("itemID", itemID); 
     cmd.Connection = conn; 
     cmd.CommandText = "SELECT Soort FROM Item WHERE ID = @itemID;"; 

     // Retrieve data 
     // Try-catch-final to catch wrong itemID error 
     try 
     { 
      conn.Open(); 
      SqlDataReader sdr = cmd.ExecuteReader(); 

      while (sdr.Read()) 
      { 
       soort = sdr["Soort"].ToString(); 
      } 

      if (soort == "Boek") 
      { 
       itemsoort = 1; 
      } 
      if (soort == "Game") 
      { 

       itemsoort = 2; 
      } 

      if (soort == "") 
      { 
       itemsoort = 3; 
       MessageBox.Show("Dit ID bestaat niet!"); 

      } 
     } 
     catch 
     { 
      MessageBox.Show("Oeps! Er ging iets mis!"); 
     } 
     finally 
     { 
      conn.Close(); 
     } 

    } 

    public bool CheckStatus(int itemID) 
    { 
     // Variables 
     bool itemStatus = true; 
     SqlConnection conn = new SqlConnection(connectionString); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Parameters.AddWithValue("itemID", itemID); 

     // Method   
     cmd.Connection = conn; 
     cmd.CommandText = "SELECT Status FROM Item WHERE Item.Id = @itemID;"; 

     try 
     { 
      conn.Open(); 
      SqlDataReader sdr = cmd.ExecuteReader(); 
      while (sdr.Read()) 
      { 
       itemStatus = (bool)sdr["Status"]; 
      } 
     } 

     catch 
     { 
      MessageBox.Show("Oeps! Er ging iets mis!"); 
     } 
     finally 
     { 

      conn.Close(); 
     } 
     return itemStatus; 

    } 

    public List<Game> ShowGame(int itemID) 
    { 
     // Variable declaration 
     List<Game> gameList = new List<Game>(); 
     SqlConnection conn = new SqlConnection(connectionString); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Parameters.AddWithValue("itemID", itemID); 

     // Retrieve data 
     cmd.Connection = conn; 
     cmd.CommandText = "SELECT Game.*, Item.*, convert(varchar, Item.DvU, 101) AS DatumVUitgave, Platform.Soort as Platform, Media.soort as Media, GameGenre.Genre AS Genre FROM Game LEFT JOIN ITEM ON Item.ID = Game.itemID LEFT JOIN Media ON Game.MediaID = Media.Id LEFT JOIN Platform ON Game.PlatformID = Platform.Id LEFT JOIN GameGenre ON Game.GameGenreID = GameGenre.Id WHERE Game.itemID = @itemID;"; 

     try 
     { 
      conn.Open(); 
      SqlDataReader sdr = cmd.ExecuteReader(); 
      while (sdr.Read()) 
      { 
       gameList.Add(new Game() { Titel = sdr["Titel"].ToString(), Dvu = sdr["DatumVUitgave"].ToString(), Genre = sdr["Genre"].ToString(), Media = sdr["Media"].ToString(), Pegi = sdr["PEGI"].ToString(), Platform = sdr["Platform"].ToString(), EAN = sdr["EAN"].ToString(), Uitgever = sdr["Uitgever"].ToString() }); 
      } 

     } 

     catch (FormatException e) 
     { 
      MessageBox.Show(e.Message); 
     } 

     catch 
     { 
      MessageBox.Show("Oeps! Er ging iets mis!"); 
     } 



     finally 
     { 
      conn.Close(); 
     } 

     return gameList; 
    } 

    public List<Boek> ShowBoek(int itemID) 
    { 
     // Variable declaration 
     List<Boek> boekList = new List<Boek>(); 
     SqlConnection conn = new SqlConnection(connectionString); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Parameters.AddWithValue("itemID", itemID); 

     // Retrieve data 
     cmd.Connection = conn; 
     cmd.CommandText = "SELECT Boek.*, Item.*, convert(varchar, Item.DvU, 101) AS DatumVUitgave, Auteur.Auteur AS Auteur, BoekGenre.Genre AS Genre, Bindwijze.Soort as Bindwijze, Taal.Taal AS Taal FROM Boek LEFT JOIN Item ON Boek.ItemID = Item.Id LEFT JOIN Bindwijze ON Boek.BindwijzeID = Bindwijze.ID LEFT JOIN BoekGenre ON Boek.BoekGenreID = BoekGenre.Id LEFT JOIN Auteur on Boek.AuteurID = Auteur.Id LEFT JOIN Taal ON Boek.TaalID = Taal.Id WHERE Boek.ItemID = @itemID;"; 

     try 
     { 
      conn.Open(); 
      SqlDataReader sdr = cmd.ExecuteReader(); 
      while (sdr.Read()) 
      { 
       // Fill boek with retrieved item(s) 
       boekList.Add(new Boek() { Auteur = sdr["Auteur"].ToString(), Genre = sdr["Genre"].ToString(), Dvu = sdr["DatumVUitgave"].ToString(), ISBN101 = sdr["ISBN10"].ToString(), ISBN131 = sdr["ISBN13"].ToString(), Paginas = sdr["AantalPagina"].ToString(), Taal = sdr["Taal"].ToString(), Titel = sdr["Titel"].ToString(), Bindwijze = sdr["Bindwijze"].ToString(), Uitgever = sdr["Uitgever"].ToString() }); 
      } 

     } 

     catch (FormatException e) 
     { 
      MessageBox.Show(e.Message); 
     } 

     catch 
     { 
      MessageBox.Show("Oeps! Er ging iets mis!"); 
     } 


     finally 
     { 
      conn.Close(); 
     } 

     return boekList; 
    } 
} 
+2

에 변화? 즉, DBChecks.cs. – OnlyThenDidIReckonMyCurse

+0

ucLead.cs (아마도 생성자)에 대한 관련 코드를 표시 할 수 있습니까? –

+0

'ucLeed'가'null' 인 것 같아요. 코드를 게시하고 인스턴스화하는 방법을 적어주세요. – Brian

답변

2

시도는 관련 코드를 게시하시기 바랍니다 수 string lidID;string lidID = "";에 아마 bool reserveerStatus;bool reserveerStatus = false;

+0

이 문제가 해결되었습니다. 나는 울고있다. 고맙습니다! – Matthijs

+0

대단히 환영합니다. – tinstaafl

0

그래, 아직도 어떻게 또는 왜 모르겠다; ucLeed에서 코드를 제거하면 드래그하여 컨트롤을 폼에 놓을 수 있습니다.

방법이나 이유는 확실치 않지만 그 부분을 알아 내려고 노력합니다.

관련 문제