Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[visual basic] - Zmienna z "Form1" do "Form2"

016darek 14 Mar 2013 20:49 3357 10
  • #1
    016darek
    Level 10  
    Witam
    Dzis zaczalem nauke VisualBasic.Mam problem ze zmiennymi,dokladnie chodzi o to ze deklarujac zmienna w jednym "Form",chcialbym zeby byla ona dostepna do wyswietlenia w drugim "Form". Ogolnie program wyglada tak ze w "Form1" ,pomijajac szczegoly,mam text box do ktorego uzytkownik ma wpisac tekst,ponizej mam przycisk wywolujacy "Form2" zawierajacy textboxy w ktorych maja sie wyswietlac dane podane w "Form1". Probowalem roznego rodzaju zmiennych(Dim,Public) jednak nie bylo efektu. W internecie tez zadnego rozwiazania nie znalazlem. Deklarujac zmienne zawsze otrzymywalem blad. Moze mi ktos podpowiedziec jak rozwiazac ten problem?
  • #2
    adamas_nt
    Moderator of Programming
    Jeśli zadeklarujesz zmienną globalną (Public zmienna As typ) w module, będzie widoczna w całym projekcie...
  • #3
    016darek
    Level 10  
    1)Tworze modul,deklaruje w nim zmienna globalna "Public test As String",nastepnie przypisuje wartosc "test=przykladowy tekst"
    2)W "Form1" dodaje button wywolujacy msgBox z zamieszczona zmienna,po wpisaniu pokazuje blad ze zmienna nie jest zadeklarowana.Szukalem dalej w necie na ten temat,bez rezultatow.
    moge prosic o jakis dokladniejszy przyklad?
  • Helpful post
    #4
    adamas_nt
    Moderator of Programming
    Zrobiłem prawie wg. Twojej instrukcji i... działa:

    [visual basic] - Zmienna z "Form1" do "Form2"

    [visual basic] - Zmienna z "Form1" do "Form2"     [visual basic] - Zmienna z "Form1" do "Form2"

    [visual basic] - Zmienna z "Form1" do "Form2"     [visual basic] - Zmienna z "Form1" do "Form2"
  • #5
    016darek
    Level 10  
    Dzieki wielkie Adam ;)
  • #6
    016darek
    Level 10  
    Mam jeszcze jedno pytanie,tym razem z uzyciem troche innego rozwiazania

    Program ma dzialac tak: W form1 mam TextBox1 do ktorego wpisuje tekst,po wcisnieciu Button1 wpisany tekst ma byc zapisany w zmiennej x i ma pojawic sie Form2,gdzie mam TextBox2 ktory ma zawierac to co TextBox1,czyli wartosc zmiennej x

    Oto sposob w jakim probowalem to zrobic:

    Deklaruje zmienna globalna w module:
    Code:
    Module modul
    

        Public x As String


    End Module


    Do TextBox1 w Form1 dodaje:
    Code:
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    

    x = TextBox1.Text


        End Sub


    Do TextBox2 w Form2 dodaje:
    Code:
    Public Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged, peselBox.TextChanged
    

    TextBox2.text = x

        End Sub



    Powyzsze rozwiazanie nie przynosi efektu.Probowalem wyswietlic zawartosc zmiennej x za pomoca polecenia Print,jednak efekt jest podobny.Wartosc dla zmiennej x jest prawidlowo zapisywana,poniewaz dziala wyswietlenie w drugim text boxie,z tym ze w obrebie jednego Form

    Wczesniejsze rozwiazanie adamas_nt oczywiscie dziala,jednak nie chce zadnych dodatkowych wyskakujacych okienek
    Jakies sugestie?
  • #7
    czeles
    Level 17  
    Nie można wyświetlenia zawartości zmiennej x w TextBoxie Form2 wykonać przez zdarzenie TextChanged. To zdarzenie nie zostaje wywołane co można prosto sprawdzić. Trzeba skorzystać ze zdarzenia Form_Load() dla Form2.
  • #8
    101pawel
    Level 27  
    016darek wrote:
    Program ma dzialac tak: W form1 mam TextBox1 do ktorego wpisuje tekst,po wcisnieciu Button1 wpisany tekst ma byc zapisany w zmiennej x i ma pojawic sie Form2,gdzie mam TextBox2 ktory ma zawierac to co TextBox1
  • #9
    016darek
    Level 10  
    Probowalem przeniesc projekt z zalaczonego pliku exel do VB.Wszystkie obiekty nazwalem identycznie zeby nie zmieniac jak narazie kodu
    Kod dla modulu-brak bledow
    Kod dla UserForm1-nastepujace bledy:
    Code:
     
    
    - Option Explicit --> Error 1 'Option' statements must precede any declarations or 'Imports' statements.

    - txt = Me.TextBox1 --> Error   2 Value of type 'System.Windows.Forms.TextBox' cannot be converted to 'String'.
    podkreslone na niebiesko,blad ginie po zmodyfikowaniu na   txt = Me.TextBox1.text

    - Unload(Me) --> Unload is undeclared

    - UserForm2.Show(1) --> Error 4 Value of type 'Integer' cannot be converted to 'System.Windows.Forms.IWin32Window'.


    Kod dla UserForm2 nastepujace bledy:
    Code:

    Option Explicit --> blad jak powyzej

    Me.TextBox1 = txt--> blad jak powyzej


    W zalaczniku przesylam caly projekt. Bede wdzieczny za poprawienie bledow w projekcie. Zamowilem juz ksiazke i jak do mnie dotrze zabieram sie za nauke,bo zaciekawil mnie ten VisualBasic :)
  • Helpful post
    #10
    101pawel
    Level 27  
    016darek wrote:
    Zamowilem juz ksiazke...

    Miałeś najpierw zamówić książkę... :wink:
    Pozdrawiam

    Aha, pierwszy przykład zrobiłem Ci w VBA bo nie miałem VB pod ręką, no i nie wiedziałem, że dopiero zamawiasz książkę.
  • #11
    016darek
    Level 10  
    Super.Dzieki wielkie ;)