Komputer Świat Ekspert - Forum: [C#] Panel logowania - Komputer Świat Ekspert - Forum

Skocz do zawartości

Strona 1 z 1

[C#] Panel logowania

#1 Użytkownik nie jest zalogowany   NightTrain 

  • noob forever
  • Pip
  • Grupa: Czytelnicy
  • Postów 301
  • Rejestracja: 24-październik 07

Napisano 06 wrzesień 2010, 11:42

Witam,

Stworzyłem do mojej bazy danych panel logowania. Może banalne pytanko, ale, gdy wcześniej korzytsałem z borland buildera, zamykałem jedna formę i dawałem po podaniu prawidłowego hasła Visible drugiej formy na true, wtedy pierwsza z panelem logowania zamykała się,a druga się pojawiała. Jednak tutaj mam problem, otóż mój kod wygląda tak:
private void button1_Click(object sender, EventArgs e)
        {
            if ((this.textBox1.Text == "admin") && (this.textBox2.Text == "haslo"))

            {
            Form2 Form2 = new Form2();
            Form1.ActiveForm.Visible = false;
            Form2.Show(); //lub Form2.Visible = true;                
            //this.Close();
            }
            else 
            {
            MessageBox.Show("Niepoprawne dane! Proszę spróbować ponownie");
            this.textBox1.Clear();
            this.textBox2.Clear();
            }
        }

Problem właśnie w tym, że udaje mi się jedynie zrobic Visible pierwszej formy na false, ale chciałbym, aby ona się zamknęła. Próbowałem z //this.Close(); tak jak widać zakomentowanie w kodzie, jednak nie pomaga. Jak to zrobić?

pozdrawiam
0

#2 Użytkownik nie jest zalogowany   imcpan 

  • Początkujący Uczestnik
  • Pip
  • Grupa: Czytelnicy
  • Postów 249
  • Rejestracja: 29-listopad 05

Napisano 06 wrzesień 2010, 13:01

Zamknięcie Form1, jeżeli jest główną formą aplikacji powoduje zamknięcie aplikacji a zatem i zamknięcie Form2. Przy zamknięciu Form1 zwalniane są wszystkie podrzędne zasoby i program przechodzi na koniec funkcji Main() i kończy działanie.

Podejrzyj sobie plik program.cs

Jeżeli chcesz aby Form1 było tylko ekranem logowania, to wywołanie nowej formy musisz zrobić w funkcji Main() np tak

Form1 f1 = new Form1();
Application.Run(f1);
if(f1.login == "OK")
{
Application.Run(new Form2());
}

gdzie login jest zmienną publiczną z Form1

Wtedy w funkcji
private void button1_Click(object sender, EventArgs e)
możesz, a nawet musisz dać
this.Close();

Użytkownik imcpan edytował ten post 06 wrzesień 2010, 13:12

0

#3 Użytkownik nie jest zalogowany   NightTrain 

  • noob forever
  • Pip
  • Grupa: Czytelnicy
  • Postów 301
  • Rejestracja: 24-październik 07

Napisano 06 wrzesień 2010, 16:47

Witam, dzieki za odpowiedz.

Do buttona1 on click dodałem: this.Close();
Jednak do program.cs dodając ten kod otrzymałem fulę błędów typu:
Error	1	'pierwszy.Form1.textBox1' is inaccessible due to its protection level	C:\Documents and Settings\someone\Pulpit\pierwszy\pierwszy\pierwszy\Program.cs	21	21	pierwszy
Error	2	'pierwszy.Form1.textBox2' is inaccessible due to its protection level	C:\Documents and Settings\someone\Pulpit\pierwszy\pierwszy\pierwszy\Program.cs	21	53	pierwszy
Error	3	An object reference is required for the non-static field, method, or property 'pierwszy.Form1.textBox1'	C:\Documents and Settings\someone\Pulpit\pierwszy\pierwszy\pierwszy\Program.cs	28	17	pierwszy
Error	4	'pierwszy.Form1.textBox1' is inaccessible due to its protection level	C:\Documents and Settings\someone\Pulpit\pierwszy\pierwszy\pierwszy\Program.cs	28	23	pierwszy
Error	5	An object reference is required for the non-static field, method, or property 'pierwszy.Form1.textBox2'	C:\Documents and Settings\someone\Pulpit\pierwszy\pierwszy\pierwszy\Program.cs	29	17	pierwszy
Error	6	'pierwszy.Form1.textBox2' is inaccessible due to its protection level	C:\Documents and Settings\someone\Pulpit\pierwszy\pierwszy\pierwszy\Program.cs	29	23	pierwszy



Oto kod proram.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace pierwszy
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Form1 f1 = new Form1();
            Application.Run(new Form1());

            if ((f1.textBox1.Text == "admin") && (f1.textBox2.Text == "haslo"))
            {
                Application.Run(new Form2());               
            }
            else
            {
                MessageBox.Show("Niepoprawne dane! Proszę spróbować ponownie");
                Form1.textBox1.Clear();
                Form1.textBox2.Clear();
            }
        }

    }
}


Co robię żle? Pewnie składnia...

Użytkownik NightTrain edytował ten post 06 wrzesień 2010, 16:51

0

#4 Użytkownik nie jest zalogowany   imcpan 

  • Początkujący Uczestnik
  • Pip
  • Grupa: Czytelnicy
  • Postów 249
  • Rejestracja: 29-listopad 05

Napisano 06 wrzesień 2010, 17:32

Chyba tutaj, w warunku else.
Nie tak
Form1.textBox1.Clear();
Form1.textBox2.Clear();

tylko tak
f1.textBox1.Clear();
f1.textBox2.Clear();

Użytkownik imcpan edytował ten post 06 wrzesień 2010, 17:33

0

#5 Użytkownik nie jest zalogowany   NightTrain 

  • noob forever
  • Pip
  • Grupa: Czytelnicy
  • Postów 301
  • Rejestracja: 24-październik 07

Napisano 06 wrzesień 2010, 19:35

tego też próbowałem niestety nie, wtedy wyskakują takie błędy:
Error	1	'pierwszy.Form1.textBox1' is inaccessible due to its protection level	C:\Documents and Settings\someone\Pulpit\pierwszy\pierwszy\pierwszy\Program.cs	21	21	pierwszy
Error	2	'pierwszy.Form1.textBox2' is inaccessible due to its protection level	C:\Documents and Settings\someone\Pulpit\pierwszy\pierwszy\pierwszy\Program.cs	21	53	pierwszy
Error	3	'pierwszy.Form1.textBox1' is inaccessible due to its protection level	C:\Documents and Settings\someone\Pulpit\pierwszy\pierwszy\pierwszy\Program.cs	28	20	pierwszy
Error	4	'pierwszy.Form1.textBox2' is inaccessible due to its protection level	C:\Documents and Settings\someone\Pulpit\pierwszy\pierwszy\pierwszy\Program.cs	29	20	pierwszy

0

#6 Użytkownik nie jest zalogowany   imcpan 

  • Początkujący Uczestnik
  • Pip
  • Grupa: Czytelnicy
  • Postów 249
  • Rejestracja: 29-listopad 05

Napisano 07 wrzesień 2010, 07:21

Nadaj textboxom (textBox1 i textBox2) atrybut public.
Domyślnie jest chyba private, stąd spoza klasy Form1 nie sa one dostępne.

Użytkownik imcpan edytował ten post 07 wrzesień 2010, 07:24

0

#7 Użytkownik nie jest zalogowany   reVis 

  • search, think, then write...
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1027
  • Rejestracja: 12-luty 05

Napisano 07 wrzesień 2010, 08:30

Wyświetl postUżytkownik imcpan dnia 07 wrzesień 2010, 07:21 napisał

Nadaj textboxom (textBox1 i textBox2) atrybut public.
Domyślnie jest chyba private, stąd spoza klasy Form1 nie sa one dostępne.

W takim razie może wszystko uznajmy za public i będzie z głowy. Nie robi się takich rzeczy. Przerzucanie odpowiedzialności do klasy używającej łamie całe pojęcie enkapsulacji. Poprawniej będzie dodać do klasy Form1 publiczną metodę Reset która ustawi prywatne pola (textboxy) do stanu początkowego. Wtedy kod dla else sprowadzimy do:
MessageBox.Show("Niepoprawne dane! Proszę spróbować ponownie");
f1.Reset();

Doświadczenie to nazwa jaką nadajemy naszym błędom - Oscar Wilde
http://revis-dev.blogspot.com --V-- gg 6078784 --V-- revis[kropka]pl[malpa]gmail[tez_kropka]com
0

#8 Użytkownik nie jest zalogowany   imcpan 

  • Początkujący Uczestnik
  • Pip
  • Grupa: Czytelnicy
  • Postów 249
  • Rejestracja: 29-listopad 05

Napisano 07 wrzesień 2010, 08:36

Wyświetl postUżytkownik reVis dnia 07 wrzesień 2010, 08:30 napisał

W takim razie może wszystko uznajmy za public i będzie z głowy. Nie robi się takich rzeczy. Przerzucanie odpowiedzialności do klasy używającej łamie całe pojęcie enkapsulacji. Poprawniej będzie dodać do klasy Form1 publiczną metodę Reset która ustawi prywatne pola (textboxy) do stanu początkowego. Wtedy kod dla else sprowadzimy do:
MessageBox.Show("Niepoprawne dane! Proszę spróbować ponownie");
f1.Reset();


Ideologicznie oczywiście masz rację, ale technicznie efekt będzie ten sam, a więcej roboty, bo i w warunku if wtedy się do Form1.textBox nie dostanie i potrzebna będzie kolejna metoda publiczna.
0

#9 Użytkownik nie jest zalogowany   reVis 

  • search, think, then write...
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1027
  • Rejestracja: 12-luty 05

Napisano 07 wrzesień 2010, 09:53

Wyświetl postUżytkownik imcpan dnia 07 wrzesień 2010, 08:36 napisał

Ideologicznie oczywiście masz rację, ale technicznie efekt będzie ten sam, a więcej roboty, bo i w warunku if wtedy się do Form1.textBox nie dostanie i potrzebna będzie kolejna metoda publiczna.

Owszem... będzie potrzebna, nawet nie jedna, najlepiej dwie właściwości publiczne. Całe dwie więcej linijki tekstu, to chyba nie jest tak dużo prawda? ;)
Reasumując proponuję następujące rozwiązanie. Klasa Form1 jak główna programu i klasa LoginForm dostarczająca dane do sprawdzenia uprawnień. LoginForm to 2 pola tekstowe (login, hasło) i 2 przyciski (ok, cancel).
public partial class LoginForm : Form
{
    public LoginForm()
    {
        InitializeComponent();
    }

    public string Login { get { return tbLogin.Text; } }
    public string Password { get { return tbPassword.Text; } }

    private void btnOk_Click(object sender, EventArgs e)
    {
        DialogResult = DialogResult.OK;
    }

    private void btnCancel_Click(object sender, EventArgs e)
    {
        DialogResult = DialogResult.Cancel;
    }

    public void Reset()
    {
        tbLogin.Clear();
        tbPassword.Clear();
    }
}

A kod wejścia aplikacji:
static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        LoginForm loginForm = new LoginForm();
        bool exit = false;
        do {
            DialogResult result = loginForm.ShowDialog();
            switch (result) {
                case DialogResult.OK:
                    if (CheckPrivileges(loginForm.Login, loginForm.Password)) {
                        Application.Run(new Form1());
                        exit = true;
                    } else {
                        MessageBox.Show("Spróbuj ponownie");
                        loginForm.Reset();
                    }
                    break;
                case DialogResult.Cancel:
                    exit = true;
                    break;
            }
        } while (exit == false);
    }

    private static bool CheckPrivileges(string login, string pass)
    {
        return login == "admin" && pass == "haslo";
    }
}

Doświadczenie to nazwa jaką nadajemy naszym błędom - Oscar Wilde
http://revis-dev.blogspot.com --V-- gg 6078784 --V-- revis[kropka]pl[malpa]gmail[tez_kropka]com
0

#10 Użytkownik nie jest zalogowany   NightTrain 

  • noob forever
  • Pip
  • Grupa: Czytelnicy
  • Postów 301
  • Rejestracja: 24-październik 07

Napisano 10 wrzesień 2010, 23:04

Ok, więc zrobiłem tak:
mój przycisk OK - to "vistaButton1"(textBox1) | przycisk anuluj to "vistaButton2"(textBox2)

po zrobieniu w/g powyższego opisu dostaję błędy (wypluwa je w Form1.cs)
Error    2    The name 'InitializeComponent' does not exist in the current context    D:\moje_aplikacje_c_sharp\inwentarzowa\pierwszy\pierwszy\Form1.cs    18    13    pierwszy
Error	3	The name 'textBox1' does not exist in the current context	D:\moje_aplikacje_c_sharp\inwentarzowa\pierwszy\pierwszy\Form1.cs	21	44	pierwszy
Error	4	The name 'textBox2' does not exist in the current context	D:\moje_aplikacje_c_sharp\inwentarzowa\pierwszy\pierwszy\Form1.cs	22	47	pierwszy
Error	5	The name 'vistaButton1' does not exist in the current context	D:\moje_aplikacje_c_sharp\inwentarzowa\pierwszy\pierwszy\Form1.cs	36	13	pierwszy
Error	6	The name 'vistaButton2' does not exist in the current context	D:\moje_aplikacje_c_sharp\inwentarzowa\pierwszy\pierwszy\Form1.cs	37	13	pierwszy
	


Oto pliki, które wypełniłem tak jak wyżej zostało opisane:
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace pierwszy
{

    public partial class LoginForm : Form
    {
        public LoginForm()
        {
            InitializeComponent();
        }

        public string Login { get { return textBox1.Text; } }
        public string Password { get { return textBox2.Text; } }

        private void vistaButton1_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.OK;
        }

        private void vistaButton2_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
        }

        public void Reset()
        {
            vistaButton1.Clear();
            vistaButton2.Clear();
        }
    }

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void vistaButton1_Click(object sender, EventArgs e)
        {
            if ((this.textBox1.Text == "root") && (this.textBox2.Text == "qazwsx"))
            {
                Form2 Form2 = new Form2();
                Form1.ActiveForm.Visible = false;
                Form2.Show(); //lub Form2.Visible = true;              
                //this.Close();
            }
            else
            {
                MessageBox.Show("Niepoprawne dane! Proszę spróbować ponownie");
                this.textBox1.Clear();
                this.textBox2.Clear();
            }

        }

        private void vistaButton2_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        }
   
    }


oraz Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace pierwszy
{


    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            LoginForm loginForm = new LoginForm();
            bool exit = false;
            do
            {
                DialogResult result = loginForm.ShowDialog();
                switch (result)
                {
                    case DialogResult.OK:
                        if (CheckPrivileges(loginForm.Login, loginForm.Password))
                        {
                            Application.Run(new Form1());
                            exit = true;
                        }
                        else
                        {
                            MessageBox.Show("Spróbuj ponownie");
                            loginForm.Reset();
                        }
                        break;
                    case DialogResult.Cancel:
                        exit = true;
                        break;
                }
            } while (exit == false);
        }

        private static bool CheckPrivileges(string login, string pass)
        {
            return login == "admin" && pass == "haslo";
        }
    }

}

0

#11 Użytkownik nie jest zalogowany   reVis 

  • search, think, then write...
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1027
  • Rejestracja: 12-luty 05

Napisano 11 wrzesień 2010, 18:03

Zrobiłeś wszystko na opak. Wstawiając ślepo mój kod nie sprawisz, że zacznie on sam z siebie magicznie działać. A już tym bardziej, klasa LoginForm nie będzie miała zielonego pojęcia co jest wewnątrz klasy Form1 (i bardzo dobrze). Stąd wszystkie błędy. Wskazane w błędach nazwy są referencjami do kontrolek znajdujących się na Form1, a nie na LoginForm. Ale teraz do rzeczy:
Zwróć uwagę, że przy definicji klasy użyto słowa partial. Oznacza to, że część klasy jest zdefiniowana w innym pliku *.cs. Ta część z kolei w momencie kompilacji zostanie scalona z resztą. W ten sposób działa układanie kontrolek w VS. Powstają dla form dwa standardowej pliki:
  • JakasForma.cs
  • JakasForma.Designer.cs

Pierwszy jest przeznaczony dla Ciebie i w najprostszej wersji służy do obsługi eventów, a drugi jest automatycznie modyfikowany przez VS gdy zmieniasz coś w edytorze danej formatki. Modyfikacje te polegają głównie na dodawaniu nowych obiektów kontrolek i zmian w metodzie InitializeComponent().
I teraz do sedna. Masz formatkę Form1 stworzoną pewnie przy starcie projektu. Stąd istnieją pliki Form1.cs oraz Form1.Designer.cs. Gdy poukładałeś klocki w edytorze do Form1.Designer.cs dodane zostały przyciski, pola tekstowe itp. I teraz nagle dodajesz klasę LoginForm wymagając od niej obsługi wydarzeń z Form1 i dostępu do jej pól. Coś tu nie gra prawda? W LoginForm nie istnieje przecież ani metoda InitializeComponent, ani przyciski, ani pola tekstowe. Stąd wszystkie błędy. Uprzedzając Twoje pytanie -> Tak można uzyskać dostęp z LoginForm do elementów Form1... Ale nie wolno tego robić z dość błahego powodu. Nie ma w tym najmniejszego sensu.
Zwróć uwagę, że ja wkleiłem na forum jedynie źródło pliku LoginForm.cs, gdzie wciąż w IDE istniał plik LoginForm.Designer.cs z zdefiniowanymi kontrolkami. W ramach uruchomienia proponuję, weź usuń u siebie z pliku Form1.cs całą klasę LoginForm... Potem zmień nazwę formatki Form1 na LoginForm i poprzyklejaj sobie odpowiednio zdarzenia i właściwości dbając o odpowiednie ich nazwy. Wtedy powinno zadziałać.

PS. miejmy nadzieję -_-
Doświadczenie to nazwa jaką nadajemy naszym błędom - Oscar Wilde
http://revis-dev.blogspot.com --V-- gg 6078784 --V-- revis[kropka]pl[malpa]gmail[tez_kropka]com
0

#12 Użytkownik nie jest zalogowany   NightTrain 

  • noob forever
  • Pip
  • Grupa: Czytelnicy
  • Postów 301
  • Rejestracja: 24-październik 07

Napisano 11 wrzesień 2010, 18:36

Ok Revi poprawiłem wszystko i zapomniałem wywalić z Form1.cs : public partial class Form1 : Form (gapa ze mnie u góry widać) :P lol

pozmieniałem też troche w application run z form1 na form2 bo był błąd teraz zamiast tworzyc zdarzenia publiczne co nie jest jak napisałeś dobrym rozwiązaniem, gdyż widać je wszędzie pozostało na private, dzięki czemu są widoczne tylko tam, gdzie trzeba.

Mam jeszcze zaptanie odnosząc się do obecnego przykładu jak zastosować najlepiej zdarzenie tworzenia nowego usera z hasłem, czy też zmianę obecnego hasła u już istniejącego usera? Dodam, że moja aplikacja łączy się z bazą danych MySQL, więc lepiej chyba tam zapisać userów i hasła i potem porównywać.

Jednak póki co może samą zmianę hasła tego jednego użytkownika bym zobaczył jak to powinno wyglądać?

pzdr ReV- dzięki

Użytkownik NightTrain edytował ten post 11 wrzesień 2010, 18:45

0

#13 Użytkownik nie jest zalogowany   reVis 

  • search, think, then write...
  • PipPipPip
  • Grupa: Czytelnicy
  • Postów 1027
  • Rejestracja: 12-luty 05

Napisano 12 wrzesień 2010, 10:28

Nie bardzo rozumiem pytanie. Skoro aplikacja już się łączy z MySQL to faktycznie trzymanie tam tabeli z użytkownikami jest dobrym pomysłem. Ale z czym konkretnie masz problem. Z odebraniem danych od użytkownika? Z wysłaniem ich do bazy? Z stworzeniem zapytania?
Doświadczenie to nazwa jaką nadajemy naszym błędom - Oscar Wilde
http://revis-dev.blogspot.com --V-- gg 6078784 --V-- revis[kropka]pl[malpa]gmail[tez_kropka]com
0

#14 Użytkownik nie jest zalogowany   NightTrain 

  • noob forever
  • Pip
  • Grupa: Czytelnicy
  • Postów 301
  • Rejestracja: 24-październik 07

Napisano 01 listopad 2010, 23:01

Ok odświeżę temat, a więc zamierzam przerobić powyższy kodzik, tak, abym mógł sprawdzać, czy w bazie istnieje użytkownik i pokazywał Formę druga jak wpisał ktoś użytkownika, który jest w bazie, jesli nie ma takiego usera to czysci textboxy i wyswietla stosowny komunikat, a więc mam taki kodzik:

program.sc:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace lech
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            loginForm loginForm = new loginForm();
            bool exit = false;
            do
            {
                DialogResult result = loginForm.ShowDialog();
                switch (result)
                {
                    case DialogResult.OK:
                        if (CheckPrivileges(loginForm.Login, loginForm.Password))
                        {
                            Application.Run(new Form2());
                            exit = true;
                        }
                        else
                        {
                            MessageBox.Show("Spróbuj ponownie");
                            loginForm.Reset();
                        }
                        break;
                    case DialogResult.Cancel:
                        exit = true;
                        break;
                }
            } while (exit == false);
        }

        private static bool CheckPrivileges(string Login, string Password)
        {

            conn.Open();

            int count = (int)command.ExecuteScalar();
            if (count>0)

                // przekazanie do case wyniku i wyswietlenie formy drugiej

            else
            MessageBox.Show("Podałeś niepoprawne dane!");
            Reset();

            //jesli nie pokazanie komunikatu i reset textboxow
     
        }

        }
    }
}


form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace lech
{
    public partial class loginForm : Form
    {
        public MySqlConnection = 
        public loginForm()
        {
            InitializeComponent();
        }

        public string Login { get { return tbLogin.Text; } }
        public string Password { get { return tbPassword.Text; } }

        public void btnOk_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.OK;

            string connectionString = "Data Source=localhost;Database=users;Uid=root;Pwd=;";

            MySqlConnection conn = new MySqlConnection(connectionString);

            string query = ("SELECT * from users WHERE user= ' " + tbLogin + "' AND password= ' " + tbPassword + " '");

            MySqlCommand command = new MySqlCommand(query, conn);

        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
        }

        public void Reset()
        {
            tbLogin.Clear();
            tbPassword.Clear();
        }
    }
}


Problem w tym, mój kod nie trzyma się zbytnio. Nie wiem jak z form1.cs przesłać dwie zmienne do program.cs i tam porównać, czy to co wpisał user do textboxów istnieje w bazie, byłbym wdzięczny za podpowiedzi. Próbuję przekazać z form1.cs dwie zmienne do funkcji CheckPrivileges w program.cs i tam chciałbym to wszystk sprawdzić... jednak po pierwsze nie mogę zobaczyć zmiennych np conn z poziomu program.cs, która należy do form1.cs
0

Strona 1 z 1


Szybka odpowiedź

  

Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych


Zmień widoczność shoutboxa Shoutbox

PxxLT  : (04 luty 2012 - 21:31) Wieki przeminęły a tu nadal ciągle te same osoby się tylko udzielają :D
_smerf_  : (01 luty 2012 - 18:59) aktualne mrozy zamroziły całe forum
sauron  : (27 styczeń 2012 - 13:25) zauktualizowane. Pytanie jest tylko jedno, ale odpowiedź trzeba podać słownie.
Ferrari  : (26 styczeń 2012 - 17:47) A jednak boty są. Trzeba kazać wpisać odpowiedź słownie, albo zastawić inne pułapki. Wszystkie wpisują "google" w pole Tlen.
sauron  : (26 styczeń 2012 - 01:17) Póki nie będą mieć zaimplementowanego języka polskiego nic nie zdziałają ;) Najwyżej mogą na ślepo wpisywać proste wyniki działań typu "1 dodać 1". Raz może trafią, ale wtedy można zrobić trochę bardziej skomplikowane równanie i już leżą
Pretender  : (25 styczeń 2012 - 19:45) nie potrafia odpowiedziec na proste pytanie ;)
Pretender  : (25 styczeń 2012 - 19:44) sauron metoda z zabezpieczeniem tekstowym zadzialala..boty jak na razie nie sforsowaly tego, jeszcze raz dzieki :)
yojo2  : (24 styczeń 2012 - 17:05) a to przepraszam.
sauron  : (24 styczeń 2012 - 10:48) Nie przedzierają się. To są po prostu "stare boty", które jeszcze nie zostały zbanowane. Żaden nowy nie powstał po 18 styczcnia.
yojo2  : (24 styczeń 2012 - 05:57) boty sie nadal przedzieraja :(
Pretender  : (23 styczeń 2012 - 11:14) ile mam czekać na Diablo III...??? <zły> ;)
Pretender  : (23 styczeń 2012 - 09:03) ok, dzięki, spróbujemy..:)
sauron  : (22 styczeń 2012 - 21:19) @pretender - zwykłe, dodatkowe pole przy rejestracji. Działanie matematyczne (po polsku) i wsio. Nie sądze, żeby boty się przez to przebiły. Ludzie z IQ mniejszym niż rozmiar buta też się nie przebiją - dodatkowy plus.
dawido90  : (22 styczeń 2012 - 17:40) http://www.makelifeasier.pl/ - blog Kasi Tusk ;-)// To jednak fake, osoba strona, ale i tak niezłe.
Pretender  : (22 styczeń 2012 - 10:03) Potwierdzenie Tekstowe - cos takiego jest lepsze?
Pretender  : (22 styczeń 2012 - 09:56) sauron ten rodzaj zabepieczenia to jest to jakis modul? itp/ mozna to gdzies kupic i sobie zainstalowac do swojego forum?
sauron  : (22 styczeń 2012 - 09:04) Onet padł w nocy na 30sek
dawido90  : (22 styczeń 2012 - 00:15) no i bardzo dobrze
sauron  : (22 styczeń 2012 - 00:05) europarl.europa.eu
sauron  : (22 styczeń 2012 - 00:04) Na profilu FB Anonymous informuje, że biorą się za stronę parlamentu europejskiego
Rozszerz pole shoutboxa