[ SinisaB @ 18.05.2004. 09:35 ] @
Dve forme. Jedna mi sluzi kao pozadina tokom cele aplikacije(pozadina). Druga (form1) treba da je prikaze. U VB 6 sam to radio sa pozadina.show (kod ide u form1 load). Ovde to nece. Negde gresim. Kada ukucam pozadina. dobijam Activeform i jos nekoliko opcija. Stavim ActiveForm i dobijem puno opcija od kojih izaberem show, ali mi javi gresku "An unhandled exception of type 'System.NullReferenceException' occurred in WindowsApplication1.exe

Additional information: Object reference not set to an instance of an object."
Pomoc?
[ mmix @ 18.05.2004. 09:53 ] @
Citat:
SinisaB:
Dve forme. Jedna mi sluzi kao pozadina tokom cele aplikacije(pozadina). Druga (form1) treba da je prikaze. U VB 6 sam to radio sa pozadina.show (kod ide u form1 load). Ovde to nece.

Problem je što .net ne instancira objekte automatski. Ako hoćeš da prikažeš Form2 iz Form1, moraš da ubaciš kod:

Code:

Dim f2 As New Form2()
f2.Show()   ' ili ShowModal ako hoćeš modalni dijalog


[ SinisaB @ 18.05.2004. 10:11 ] @
Hvala! To je to.
[ SinisaB @ 21.05.2004. 07:59 ] @
Kako da zatvorim odredjenu formu? Kada stavim form1.close nista se ne desava. Ako stavim samo close zatvori mi sve forme. Kod ide u 'on click' dogadjaj.
Da li je moguce u Windows media player-u izbeci logo koji se prikazuje na pocetku?
[ ZokiR @ 21.05.2004. 08:57 ] @
Da bi zatvorio formu, moraš da pozoveš Close metodu na instanci koju želiš da zatvoriš. Pretpostavljam da form1.Close kod tebe ništa ne radi zato što to nije onaj form koji si prethodno prikazao, samo je ime varijable isto. Da bi to radilo kako treba, moraš nekako da sačivaš originalnu referencu na form koji je prikazan, ovako na primer:
Code:
Public Class FirstForm
    Inherits System.Windows.Forms.Form

    Private mySecondForm As SecondForm

...automatski generisani kod ide ovde...

    Private Sub OpenSecondForm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenSecondForm.Click
        Me.mySecondForm = New SecondForm
        Me.mySecondForm.Show()
    End Sub

    Private Sub CloseSecondForm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CloseSecondForm.Click
        Me.mySecondForm.Close()
    End Sub
End Class

Dobro bi bilo da ne koristiš imena koja Visual Studio automatski generiše (Form1, Form2) nego im promeni imena tako da imaju smisla. Biće ti lakše kasnije da raspoznaješ šta je koji form.
[ SinisaB @ 21.05.2004. 11:16 ] @
Ovako to izgleda kod mene i ne radi:
Public Class Form2
Inherits System.Windows.Forms.Form
Private intro As Form2

#Region " Windows Form Designer generated code "


Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim f1 As New Form1
f1.Show()

End Sub


Private Sub AxMediaPlayer1_EndOfStream(ByVal sender As Object, ByVal e As AxMediaPlayer._MediaPlayerEvents_EndOfStreamEvent) Handles AxMediaPlayer1.EndOfStream
Dim f3 As New Form3
f3.Show()
Me.intro.Close()

End Sub

End Class

Promenicu nazive formi cim proradi.
[ ZokiR @ 21.05.2004. 13:10 ] @
Gde se nalazi Me.intro.Show()? Ako nije prikazan, ne može ni biti zatvoren.

I zašto u Form2 klasi imaš instancu Form2 klase (intro)? Ako samo želiš da zatvoriš trenutnu instancu, koristi Me.Close().
[ SinisaB @ 21.05.2004. 13:34 ] @
Forma 2 je startup. Ona poziva form1 koja je crna pozadina i treba da bude aktivna tokom cele aplikacije. Na formi 2 je MediaPlayer1 koji se automatski pokrece sa ucitavanjem forme 2. Kada se animacija zavrsi (EndOfStream) treba da prikaze formu 3 a zatvori formu 2. Ovo sto sledi zatvara sve. Kako da zatvori samo formu 2?

Public Class Form2
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
#End Region

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim f1 As New Form1
f1.Show()

End Sub


Private Sub AxMediaPlayer1_EndOfStream(ByVal sender As Object, ByVal e As AxMediaPlayer._MediaPlayerEvents_EndOfStreamEvent) Handles AxMediaPlayer1.EndOfStream

Dim f3 As New Form3
f3.Show()
Me.Close()

End Sub


End Class
[ ZokiR @ 21.05.2004. 14:58 ] @
Ok, problem je u tome što pokušavaš da zatvoriš glavni prozor, a to nije moguće uraditi na taj način. Rešenje je da ili ne koristiš Application.Run (pogledaj http://msdn.microsoft.com/libr...obeinvisibleatitsinception.asp ) ili da napraviš svoju ApplicationContext klasu i da iz nje kontrolišeš prikazivanje formi. Pogledaj dokumentaciju za Application.Run() i videćeš primer.