Problem z ukrywaniem głównego okna

Odpowiedz Nowy wątek
Ziom
2006-11-14 12:11
Ziom
0

Witam.

Przejrzałem kilka tematów na forum, ale nie pomogło mi to :/
Więc jeszcze raz...

Mam takiego mainforma:

        public MainForm()
        {
            InitializeComponent();
            Odpal();
        }

Teraz w Odpal(); uruchamiam nowego forma i chciałbym zamknąć tego głównego... nie wiem jednak jak się do niego odwołać :/

Próbowałem w Odpal(); czegoś takiego:

this.Hide();
MainForm.Hide();

Wpisywałem jeszcze w tym nowym formie "MainForm.Hide();", ale chyba coś cały czas kaszanię :/ proszę bardzo o naprowadzenie.

Pozostało 580 znaków

2006-11-14 12:15

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

0

Musisz przekazac temu nowemu referencje do glownej formy, zeby mogl na niej dzialac.


You need to learn how to walk
before you can run

Pozostało 580 znaków

ziom
2006-11-14 12:48
ziom
0

No, ok ale to rozwiąże gdybym chciał to robić już w nowej formatce. A jak ukryć ten główny formularz z innej klasy poprostu ?

Pozostało 580 znaków

2006-11-14 13:17

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

0

No to jak z innej klasy to musisz obiektowi tej klasy przekazac referencje do tego formularza, tak jak pisalem. Chyba sie zgubilem w tym, co chcesz zrobic.


You need to learn how to walk
before you can run

Pozostało 580 znaków

ziom
2006-11-15 10:38
ziom
0

heh prawdopodobnie to nie Ty się zgubiłeś, tylko ja jestem tak tępawy ;]

program u mnie wygląda mniej więcej tak:

public class MainForm : System.Windows.Forms.Form
{
        public MainForm()
        {
        InitializeComponent();
        Odpal();
        }

        void Odpal()
        {
        Form panel = new Panel();
        panel.Show();
        // tu chce jakos ukryc MainForm
        }
}

Gdybyś mógł proszę napisać jak przekazać referencję do Odpal to będę wdzięczny :/

Pozostało 580 znaków

2006-11-15 10:58

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

0

Najpierw chowaj glowna, a pozniej pokazuj panel. Show() oznacza pokazanie panelu i przekazanie sterowania do niego, co oznacza, ze wszystko co robisz pozniej wykona sie dopiero po tym jak panel skonczy dzialanie. Pewnie dlatego glowna ci sie nie chowala.


You need to learn how to walk
before you can run

Pozostało 580 znaków

ziom
2006-11-15 11:56
ziom
0
johny_bravo napisał(a)

Najpierw chowaj glowna, a pozniej pokazuj panel. Show() oznacza pokazanie panelu i przekazanie sterowania do niego, co oznacza, ze wszystko co robisz pozniej wykona sie dopiero po tym jak panel skonczy dzialanie. Pewnie dlatego glowna ci sie nie chowala.

No ok, dałem teraz tak:

public class MainForm : System.Windows.Forms.Form
{
        public MainForm()
        {
        InitializeComponent();
        Odpal();
        }

        void Odpal()
        {
        Hide(); //próbowałem jeszcze this.Hide();
        Form panel = new Panel();
        panel.Show();
        }
}

ale nadal mi się pokazuje ten pierwszy panel :/

Pozostało 580 znaków

2006-11-15 13:44

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

0

Ok, chyba wiem co jest nie tak - w trakcie dzialania konstruktora tak naprawde formatka jeszcze nie jest pokazana, wiec nie moze sie tez schowac. Najlepiej wywolanie tego panelu daj w glownej petli (zazwyczaj Program.cs), a dopiero pozniej stworzenie formatki.


You need to learn how to walk
before you can run

Pozostało 580 znaków

ziom
2006-11-16 10:27
ziom
0

Próbowałem na kilka nowych sposobów ale nadal nic...

Wkleją cały kodzik :/ jestem początkujący więc może gdzieś zrobiłem poprostu jakiś głupi błąd i przez to cały czas nie działa:

using System;
using System.Drawing;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;
using System.Diagnostics;
using System.Collections;

namespace Slownik_danych
{

    public class MainForm : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Label komunikat;
        private System.Windows.Forms.Label login_label;
        private System.Windows.Forms.Label naglowek;
        private System.Windows.Forms.TextBox passwordBox;
        private System.Windows.Forms.Label password_label;
        private System.Windows.Forms.Button button_logowanie;
        private System.Windows.Forms.TextBox loginBox;

        private System.Data.DataSet NewDataSet;
        SqlDataAdapter MySqlDataAdapter;

        static public string zapytanie;
        static public string polaczenie;
        static public string login;
        static public string haslo;
        static public string[] tablica;

        public MainForm()
        {
            InitializeComponent();
         }

        [STAThread]
        public static void Main(string[] args)
        {
            //Pobieram sobie  argumenty z lini komend (login i haslo)
            tablica = new string[5]; 
            int i = 0;
            foreach (string myArg in args)
            {
                tablica[i++] = myArg;
            }

            zapytanie = "select * from slo_rodz_ob";
            polaczenie = "Data Source=Server; Initial Catalog=baza; uid=" + tablica[0] + "; pwd=" + tablica[1] + "";

           //----------------------------------------

            MainForm form = new MainForm();
            form.Odpal();

            Application.Run(new MainForm());

        }

        #region Windows Forms Designer generated code

        private void InitializeComponent()
        {
            this.loginBox = new System.Windows.Forms.TextBox();
            this.button_logowanie = new System.Windows.Forms.Button();
            this.password_label = new System.Windows.Forms.Label();
            this.passwordBox = new System.Windows.Forms.TextBox();
            this.naglowek = new System.Windows.Forms.Label();
            this.login_label = new System.Windows.Forms.Label();
            this.komunikat = new System.Windows.Forms.Label();
            this.SuspendLayout();
            // 
            // loginBox
            // 
            this.loginBox.Location = new System.Drawing.Point(202, 162);
            this.loginBox.Name = "loginBox";
            this.loginBox.TabIndex = 23;
            this.loginBox.Text = "";
            // 
            // button_logowanie
            // 
            this.button_logowanie.FlatStyle = System.Windows.Forms.FlatStyle.System;
            this.button_logowanie.Location = new System.Drawing.Point(146, 226);
            this.button_logowanie.Name = "button_logowanie";
            this.button_logowanie.Size = new System.Drawing.Size(128, 24);
            this.button_logowanie.TabIndex = 27;
            this.button_logowanie.Text = "Zaloguj";
            this.button_logowanie.Click += new System.EventHandler(this.Button1Click);
            // 
            // password_label
            // 
            this.password_label.FlatStyle = System.Windows.Forms.FlatStyle.System;
            this.password_label.Location = new System.Drawing.Point(122, 194);
            this.password_label.Name = "password_label";
            this.password_label.Size = new System.Drawing.Size(56, 16);
            this.password_label.TabIndex = 26;
            this.password_label.Text = "Haslo: ";
            // 
            // passwordBox
            // 
            this.passwordBox.Location = new System.Drawing.Point(202, 194);
            this.passwordBox.Name = "passwordBox";
            this.passwordBox.PasswordChar = '*';
            this.passwordBox.TabIndex = 24;
            this.passwordBox.Text = "";
            // 
            // naglowek
            // 
            this.naglowek.FlatStyle = System.Windows.Forms.FlatStyle.System;
            this.naglowek.Font = new System.Drawing.Font("Tahoma", 14F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.World, ((System.Byte)(238)));
            this.naglowek.Location = new System.Drawing.Point(122, 82);
            this.naglowek.Name = "naglowek";
            this.naglowek.Size = new System.Drawing.Size(176, 40);
            this.naglowek.TabIndex = 28;
            this.naglowek.Text = "Logowanie do systemu";
            this.naglowek.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            // 
            // login_label
            // 
            this.login_label.FlatStyle = System.Windows.Forms.FlatStyle.System;
            this.login_label.Location = new System.Drawing.Point(122, 170);
            this.login_label.Name = "login_label";
            this.login_label.Size = new System.Drawing.Size(64, 16);
            this.login_label.TabIndex = 25;
            this.login_label.Text = "Login: ";
            // 
            // komunikat
            // 
            this.komunikat.FlatStyle = System.Windows.Forms.FlatStyle.System;
            this.komunikat.ForeColor = System.Drawing.SystemColors.HotTrack;
            this.komunikat.Location = new System.Drawing.Point(122, 130);
            this.komunikat.Name = "komunikat";
            this.komunikat.Size = new System.Drawing.Size(176, 24);
            this.komunikat.TabIndex = 29;
            this.komunikat.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            // 
            // MainForm
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
            this.ClientSize = new System.Drawing.Size(424, 333);
            this.Controls.Add(this.komunikat);
            this.Controls.Add(this.naglowek);
            this.Controls.Add(this.button_logowanie);
            this.Controls.Add(this.password_label);
            this.Controls.Add(this.login_label);
            this.Controls.Add(this.passwordBox);
            this.Controls.Add(this.loginBox);
            this.Font = new System.Drawing.Font("Tahoma", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.World, ((System.Byte)(238)));
            this.Name = "MainForm";
            this.Text = "MainForm";
            this.ResumeLayout(false);
        }
        #endregion
        void Button1Click(object sender, System.EventArgs e)
        {
                this.Hide();
        }

        void Odpal()
        {
            Visible = false;
            try
            {
                MySqlDataAdapter = new SqlDataAdapter(zapytanie, polaczenie);
                NewDataSet = new DataSet();
                MySqlDataAdapter.Fill(NewDataSet, "baza");
                login = loginBox.Text;
                haslo = passwordBox.Text;

                Hide();
                Form panel = new Panel();
                panel.Show();

            }
            catch (Exception)
            {
                komunikat.Text = "To nie jest poprawne haslo";
            }
        }

    }
}

Pozostało 580 znaków

2006-11-16 11:23

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

0

Hmm, troche nie rozumiem, co chcesz osiagnac. Na glownej formatce masz pola do wpisywania hasla i loginu. Ale przy starcie zamiast pokazywac ta formatke chcesz ja schowac i pokazac zamiast tego Panel - ktory to panel nie moze istniec bez formatki. Do czego Ci ten Panel? I dlaczego chcesz chowac glowna formatke na dzien dobry, skoro nic innego nie masz? Jesli koniecznie chcesz ja chowac to sprobuj w zdarzeniu onShow dac Hide z jakas flaga, zeby tylko za pierwszym razem sie dzialo. Ale zastanow sie jeszcze co z tym panelem, bo teraz to wyglada nieco bezsensownie.


You need to learn how to walk
before you can run

Pozostało 580 znaków

ziom
2006-11-16 12:17
ziom
0

To działa tak...

Aplikacja jest uruchamiana z dwoma parametrami, które przesyłane są w linii komend. Następnie są one czytane właśnie przez aplikację i jeśli są poprawne wyświetlana jest druga formatka, a pierwsza jest ukrywana. Jeśli natomiast coś się nie zgadza pojawia się panel do logowania.

Ten drugi panel, który jest już wywoływany łączy się z BD i czyta informacje... które są wyświetlane w drugiej formatce.

sprobuj w zdarzeniu onShow dac Hide z jakas flaga

możesz coś dokładniej ? :/

Pozostało 580 znaków

Odpowiedz

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