logowanie, get set

0

Witam, zaczynam z c# proszę o wyrozumiałość...

robie logowanie. okno logowania to klawiatura z cyframi. i teraz:

  1. na formę położyłem przyciski i w form code oprogramowałem kliknięcie
  2. w projekcie dodałem klasę Settings
 namespace tools
{
    class Settings
    {
        
        private string setConnectionString  = "Server = JOHNDOE\\SQLSRV01; Database = SQLSRV01_DB01 " +
                                              "User ID = sa; Password = Killall500; Trusted_Connection = False";

        public string ConnectionString
        {
            get { return setConnectionString; }
            set { setConnectionString = value;  }
        }
        

    }
}
  1. w projekcie dodałem klasę doLogin
namespace tools
{
    class doLogin
    {
        Settings x = new Settings();    
    }
}

ogólnie w klasie doLogin chciałbym zrobić połączenie z baza ( siegnać do setting po connectString ) i wykonać coś tam jeszcze i jeśli ok otworzyć nową fotmę na cały ekran ( no właśnie jak to zrobić? )

i nie wiem dlaczego jak daje Setting cosTam = new Settings();
cosTam. no i tutaj nie podpowiada ConnectionString

co robię źle. Może mój pomysł na logowanie jest do luftu?

0
Krystian napisał(a)

i nie wiem dlaczego jak daje Setting cosTam = new Settings();
cosTam. no i tutaj nie podpowiada ConnectionString

A piszesz to w metodzie?

0

No piszę to tak jak w załączonym kodzie.
Tak jest np. na msdn

0

Nie podpowiada a kompiluje się? Zrebuilduj projekt. Wrzuć tutaj klasę w której to wywołujesz.

0

To pokaż no tego linka do MSDN'a :)

Zapewne nie masz metody.

0

Connection string jest błędny, między database a user id nie ma średnika.
Jeśli jest jak Antek napisał, to tylko kwestia rekomplikacji projektu, bo czegoś intelisense nie załapał. Obie klasy są w jednym projekcie?

0
Krystian napisał(a)

No piszę to tak jak w załączonym kodzie.

Czyli jak?

Bo jeśli:

namespace tools
{
    class doLogin
    {
        Settings x = new Settings();    
        x.Cośtam 
   }
}

To to nie ma prawa ani nic podpowiedzieć ani skompilować, bo odwoływać się do właściwości poza metodami nie można.

0

mam tak.

 
namespace tools
{
    class Settings
    {
        
        private string setConnectionString  = "Server = JOHNDOE\\SQLSRV01; Database = SQLSRV01_DB01 " +
                                              "User ID = sa; Password = Killall500; Trusted_Connection = False";

        public string ConnectionString
        {
            get { return setConnectionString; }
            set { setConnectionString = value;  }
        }
        

    }
}

no i zaczątek

namespace tools
{
    class doLogin
    {
        Settings x = new Settings();
    }
}
 

potem w kodzie formy chciałbym użyć doLogin. Nie czuję za bardzo get set, jednak czuję we właściwościach moc i chiałbym ich użyć. Fajną opcją o której dziś czytałem są properties->settings gdzie mógłbym wpakować connectString.
Albo proszę o poradę jak Wy to robicie, chciałbym uczyć się dobrze :)

pozdrawiam Krystian

0

W doLogin piszesz:

private void PrintMyConnectionString()
{
    Console.WriteLine(x.ConnectionString);
}

BTW - nazwy klas powinny być pisane 'PascalStyle', czyli powinno być 'DoLogin' a także nie czasownikami tylko rzeczownikami (obiekt = rzecz). Czasowniki to konwencja dla metod.

0

Hej, to może inaczej .. koncepcyjnie

mam klasę xxx.cs a w niej zadeklarowanego stringa, czy inta.
z poziomu Form1.cs (czyli tam gdzie np. kodujemy click przycisku) mogę zrobić <nazwaKlasy>.<mojStringZmienna>

a z poziomu innej mojej klasy np. yy.cs nie mogę tak zrobić.

Dlaczego jak w klasie xxx.cs dam
public void sumuj() {//tutaj definicja;}

to w Form1.cs jak daje xxx nazwa = new xxx();

nazwa. i tutaj nie podpowiada metody sumuj

sorry ale zaczynam, przykładowy kod tych podstaw i jak to ubierać w klasy ( wiem że każdy może to zrobić na kilka sposobów ) a przykład do przykład

0

Koncepcyjnie to ty poznaj teorię najpierw z jakiegoś porządnego źródła.
Wewnątrz danej klasy masz dostęp do pól, właściwości, metod zarówno prywatnych jak i publicznych.
Z poziomu innej klasy masz jedynie dostęp do publicznych pól, właściwości i metod. O ile nie jest to klasa wywiedziona z jakiejś bazowej.
Deklaracja zmiennej jakiegoś typu, czy nawet jej inicjalizacja przez wywołanie konstruktora może odbywać się w klasie poza metodą (tak na prawdę w tym przypadku dokonuje się to w konstruktorze statycznym). Wszelkie odwołania do pól, właściwości, metod danej instancji klasy (obiektu) możliwe są tylko w odpowiednich blokach kodu, czyli w metodach lub getterach/setterach właściwości. Oczywiście dochodzi jeszcze zasięg zmiennej.

public class Class1
{
  private string str1;
  private int i1 = 3;
  private DateTime d1 = new DateTime(2011,5,1);

  public Class1()
  {}

  public int I1 { get {return this.i1;} set {this.i1 = value;} }
  public int I2 { get; set; }
  public string GetStr1() { return this.str1; }
}
public class Class2
{
  private Class1 c1 = new Class1();
  public Class1 c2;
  // oczywistym jest że c1.I1 nie ma żadnego sensu w tym miejscu

  public void Method1()
  {
    c1.I1 += 5; // teraz c1.I1 = 8, wcześniej 3
    c1.I2 = 2; // teraz c1.I2 = 2, wcześniej 0 - wartość domyślna typu int
    Debug.Write(c1.GetStr1());
    
    c2 = new Class1();
    c2.I1 = 1; // teraz I1 = 1, wcześniej 3
  }
}
0

Możesz wkleić cały kod swojego Form1, w którym Ci nie podpowiada tej metody?

1 użytkowników online, w tym zalogowanych: 0, gości: 1