Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Mikä elementti VB.NETissä?

runeberg [12.12.2007 13:10:22]

#

Minulla on pääformi MDIContainer ja tarvitsisin siihen sellaisen paneelin, mihin voisi laittaa välilehtiä yms. ja sitä pystyis liikuttamaan hiirellä. Muuten se voisi olla normaali formi, mutta sen pitäisi olla sellainen että kun sen siirtää jompaan kumpaan reunaan niin se "loksahtaa" sinne. Ja vaihtoehtoisesti sen voisi siirtää vaikka näytön keskelle jolloin se olisi "irrallinen."
Mikä VB.NET 2005:ssa on nimeltään tuollainen, kun tuntuu että olen kokeillut kaikkea mahdollisia, mutta mikään ei ole oikeen sellainen, tai en ole sitten osannut laittaa niille sopivia ominaisuuksia?

Tässä on pari kuvankaappausta OpenOffice Drawista missä on jotakuinkin sellainen:

Kuva 1
Kuva 2

Kiitos

runeberg [12.12.2007 15:05:30]

#

ja jatkokysymys: kun luon lapsiformille menustripin niin miksi ne siirtyvät pääformin menuun?

groovyb [12.12.2007 16:03:43]

#

toimisikohan tällainen:

luo MDIContainerin reunoille paneelit (Joissa on visible false kunnes toisin määritetään) ja määrittää että jos Form2:sta painetaan ja hiiri liikkuu x suuntaan niin se dockkaa Form2:sen MDIContainerin toiseen paneeliin hiiren liikkeen x määrittämään suuntaan.

hiiren liikkeen voisi toteuttaa ehkä jotenkin siten että se tallettaa pikselin muistiin samalla kun form2:sta painetaan, ja kun tapahtuu liike hiirellä niin se vertaa tuohon talletettuun pikseliin. Jos suurempi kuin x pikseliä suuntaan a tai b niin Fill panel1 tai panel 2 form2:sella. kun formi on siirtynyt paneelille niin sitten visible true sille paneelille missä se on, ja toinen taasen muuteen visible falseksi.

vähän hankalasti selitetty, mutta jotain tällaista varmaan kokeilisin näin äkkisältään.

voin kokeilla tänään jos saan jotain aikaiseksi.

groovyb [12.12.2007 18:53:20]

#

Jees sain jotain väännettyä. eli tee paneeli tuon pääformisi laitaan.
en tehnyt kahdella paneelilla, tein yhdellä. jos haluat tehdä kahdella, sun pitää vaan sitte vaihtaa panelin sisältöä hiiren mukaan.

tällä koodilla toimii siten, että jos tuota kakkosformia painetaan, ja vedetään x määrä pikseleitä jompaan kumpaan suuntaan niin paneeli hyppää sinne laitaan.

paneelissa oleva formi: (tota paneeliformi_MouseMove() ei tartte tehdä jos ei halua pääformissa seurata pixeleita label1,2 ja 3:sella)

Public Class paneeliformi ' elikä se paneelissa oleva formi
    Dim sijoitus As Integer ' hiiren positio kun painetaan nappi pohjaan
    Dim x As Integer ' hiiren positio jatkuvana

    Public Sub paikoitus()
        If sijoitus > (x + 100) Then
            My.Forms.Form1.Panel1.Dock = DockStyle.Left
        End If
        If sijoitus < (x - 100) Then
            My.Forms.Form1.Panel1.Dock = DockStyle.Right
        End If
    End Sub

    Private Sub paneeliformi_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
        sijoitus = x
    End Sub

    Public Sub paneeliformi_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
        My.Forms.Form1.Label1.Text = "X." & e.X & vbCrLf & "Y." & e.Y

        x = e.X
        My.Forms.Form1.Label2.Text = sijoitus
        My.Forms.Form1.Label3.Text = x
    End Sub

    Private Sub paneeliformi_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
        paikoitus()
        My.Forms.Form1.Refresh()
    End Sub
End Class

main formi:

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        paneeliformi.TopLevel = False
        Me.Panel1.Controls.Add(paneeliformi) 'lisätään tuo paneeliformi paneeliin
        paneeliformi.Show() ' näytetään se

    End Sub
End Class

oletukseksi heitin että paneeli on vasemmalla dockattuna

tota irrallisuutta kehittelen vielä

runeberg [13.12.2007 10:42:18]

#

Jeps, kiitoksia kovasti. Viä tartee vähän kehittää tuota, koska jos mulla on koko formin kokoinen TabControl niin hiirihän ei osu paneeliformin pintaan vaan tabcontrolliin ja tuo ei ymmärrä liikuttaa silloin sitä. Tai vaikka käyttäjä painaa vaikka textboxin kohtaa nappia ja yrittää liikuttaa, niin eipähän liiku. Onko jotain pomminvarmaa keinoa tuohon?
Mutta kiitoksia paljon!

groovyb [14.12.2007 17:35:56]

#

saako tabcontroliin mousemove eventtiä?
sillähän tuo ongelma hoituisi.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta