Otwieranie nowej formy

0

Witam wszystkich!
Mam pewien problem z C# (Visual Studio). Napotkałem się na taki moment przy tworzeniu pewnego programu, w którym konieczne jest otworzenie nowej formy. Tak więc, w Visualu dodałem nową rzecz, a mianowicie formę o nazwie Form2.

Gdy przeszedłem do edycji kodu guzika, który miał służyć otwieraniu Form2, użyłem takiego kodu:

{
new Form2().Show();
}

I niestety, tutaj zaczęły się schody. Zamiast normalnego pojawienia się Form2, pojawiła się pusta forma.
Potem, próbowałem nawet tego:...

form2 FormaDruga = new Form2();
FormaDruga.Show();

... lecz przypisywanie wartości "FormaDruga" do Form2 i potem odwołanie się tą wartością nic nie dało.
Szukałem na Google, nic nie znalazłem, podobnie jak w naszej forumowej wyszukiwarce. Hmm, nie mam już pojęcia co mogę zrobić.

Macie pomysły na jakąś podpowiedź? Lub wytłumaczenie? Czekam :)

Pozdrawiam!

0

Właśnie... nie. Tego próbowałem na początku. Po wpisaniu kompilator wywala: An object reference is required for the non-static field, method, or property 'System.Windows.Forms.Control.Show()'.

1

Daj więcej kodu / cały projekt. Kod, który wkleiłeś do tej pory jest poprawny.

0

Kod guzika, który ma otwierać Form2:

     private void button4_Click(object sender, EventArgs e)
        {
            Form2.Show();
        }

Kod Form2:

    private void Form2_Load(object sender, EventArgs e)
        {
            //Form2 jest pusty.
        }

Bibliotek, których używam:

using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

Do Form2 odwołuje się z Button4 znajdującego się w Form1.

1

To nie jest kod, który zamieściłeś w pierwszym poście. Daj cały projekt, bo nie wiem już co jest typem, a co twoją zmienną.

0

Podam kod na przykładzie innego projektu, z podobnym kodem, bo ten projekt jest duży i nie chcę podawać jego kodu. Za chwilę będzie kod.

0

Kod Formy numer jeden + Kod guzika zawartego w tej formie:

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 System.Threading;

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

        private void Form1_Load(object sender, EventArgs e)
        {
            //Form1
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Button służący za otwieranie Formy drugiej
            Form2 FormaDruga = new Form2();
            FormaDruga.Show();
        }
    }
}

Kod Formy numer dwa:

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 System.Threading;

namespace TestForm2
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            //Form2
        }
    }
}

Jakiś błąd znaleziony?

1

Wgraj Pan tutaj projekt cały spakowany w *.zip, bo nie widać błędu, a na dodatek nie wiadomo co kompilator mówi. :P

0

Plik wrzucę jutro lub później, przepraszam.

0

Link do projektu: http://www.wrzucaj.org/222977
Gdy już obluka Pan plik, niech usunie go z serwisu. Wystarczy kliknąć w ten link: http://www.wrzucaj.org/222977&del=848506

To tyle.

1

To mi nic nie daje... spakuj cały folder projektu w *.zip i go wstaw, bo w tym pliku nic nie ma, przynajmniej na moim komputerze. :D

1
Docent napisał(a):

bo w tym pliku nic nie ma, przynajmniej na moim komputerze. :D

Jak to nic? Wszystko jest:

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestForm2", "TestForm2\TestForm2.csproj", "{5B236A1A-6D34-4EA8-8C8B-AA586F2E141A}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|x86 = Debug|x86
		Release|x86 = Release|x86
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{5B236A1A-6D34-4EA8-8C8B-AA586F2E141A}.Debug|x86.ActiveCfg = Debug|x86
		{5B236A1A-6D34-4EA8-8C8B-AA586F2E141A}.Debug|x86.Build.0 = Debug|x86
		{5B236A1A-6D34-4EA8-8C8B-AA586F2E141A}.Release|x86.ActiveCfg = Release|x86
		{5B236A1A-6D34-4EA8-8C8B-AA586F2E141A}.Release|x86.Build.0 = Release|x86
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal
0

W takim razie, co mam robić, panowie? Wstawiać folder projektu?

1

Spakuj cały katalog z solucją w .zip i go wyślij.

0

Ok, za chwilę będzie.

0

Link do projektu w formacie RAR: http://www.wrzucaj.org/526869
Link do projektu w formacie ZIP: http://www.wrzucaj.org/164898

Proszę usunąć obydwa pliki po ich zobaczeniu:
RAR: http://www.wrzucaj.org/526869&del=494117
ZIP: http://www.wrzucaj.org/164898&del=278804

To wszystkie linki.

1
Programm3r napisał(a):

Kod guzika, który ma otwierać Form2:

     private void button4_Click(object sender, EventArgs e)
        {
            Form1.Show();
        }

Może się czepiam, ale jest tu chyba wywołanie formy 1... może to tylko literówka...

0

Nie to literówka :) Już poprawiam, przepraszam :)

1

Ty naprawdę sobie jaja z nas robisz. Ten program działa poprawnie.

1

@Rev ma rację, ten program poprawnie działa, kompilator nic nie pokazał, przy kompilowaniu, więc powinno Ci to działać bez problemu :P

//edit:
wracając na ziemię, do niby problemu:

o to łoooo, można zapisać, krócej przecież...

 
            Form2 FormaDruga = new Form2();
            FormaDruga.Show();

np. w taki sposób:

 
            new Form2().Show();
0

Nie wiem o co chodzi. Pojawia mi się Forma numer 2, lecz nie takich rozmiarów jakie określiłem. Gdy podczas edytowania formy drugiej dałem do niej guzik, i potem chciałem ją otworzyć przez program, lecz pojawiła się pusta forma. WTF?

1

Gdy podczas edytowania formy drugiej dałem do niej guzik, i potem chciałem ją otworzyć przez program, lecz pojawiła się pusta forma. WTF?

Ja zrobiłem dokładnie to samo i działało.

1

@Programm3r: Coś mi się zdaje, że nie do końca to robisz, o czym piszesz, albo masz skopane IDE, chociaż to mało prawdopodobne. :P

4
Programm3r napisał(a):

Nie wiem o co chodzi. Pojawia mi się Forma numer 2, lecz nie takich rozmiarów jakie określiłem. Gdy podczas edytowania formy drugiej dałem do niej guzik, i potem chciałem ją otworzyć przez program, lecz pojawiła się pusta forma. WTF?

Coś źle robisz.

Tworzę nowy projekt "Windows Forms Application". Na formie 1 kładę przycisk.
a.png

Tworzę nową formę (Ctrl+Shift+A, Windows Form).
Kładę na niej guzik.
b.png

Klikam dwa razy na button1 na formie pierwszej. Piszę kod:

        private void button1_Click(object sender, EventArgs e)
        {
            new Form2().Show();
        }

Uruchamiam program. Działa bez zarzutu.
c.png

0

@Azarien Ja nie wiem o co biega w moim przypadku. Forma numer dwa jest pusta. Odwołam się do posta @Docent .
Spróbuje zrobić reinstall całego Visual Studio. Będzie to trochę trwało, ale mam czas ;)

W kolejnym poście dam wyniki.
I @Azarien , dzięki, że Ci się chciało robić ten cały poradnik :) Niestety, bez skutku.

Wyniki za ok. godzinę.

1

A patrzyłeś do kodu designera? Może tam z jakiegoś powodu Ci czyści. Może przedebuguj się przez InitializeComponent. Może coś zauważysz.

0

@Sarrus , patrzyłem, nic. Visual Studio właśnie się re-installuje.

0

Działa po reinstallce Visual Studio :)

Dziękuje wszystkim, którzy zaangażowali się w ten temat, aby mi pomóc :) Wszyscy dostają po Pozytywnej ocenie :)

Temat do zamknięcia!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.