Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    103

    [Vb.net] Posizione assoluta controllo

    Ciao a tutti, ho la necessita di posizionare una listbox subito sotto ad un text box. Il problema è che il textbox è all'interno di un tablelayoutpanel, il quale è dentro ad uno splitcontainer quindi ho dei problemi a posizionare la lista.

    Ho pensato di prendere le coordinate all'interno dello schermo del textbox:

    codice:
    Dim po As Point = Me.Control.PointToScreen(New Point(0, 0))
    e poi impostarle alla listbox. Il problema è che ovviamente non tornano in quanto nel punto po ci sono e coordinate proiettate sullo schemo, mentre tramite il metodo:

    codice:
    list.location=po
    le coordinate vengono prese in riferimento al form.

    Come posso convertire o impostare la posizione della lista tramite il passaggio di coordinate a schermo?

    Non so se sono riuscito a spiegarmi.

    Grazie a tutti in anticipo

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Le discussioni su Visual Basic .NET sono ospitate nella relativa sezione.

    Sposto la discussione correggendo anche il titolo per renderlo più significativo (provvedi tu in futuro).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Se non vado errato, la proprietà Location della classe Control non si riferisce al Form, ma al contenitore che contiene il controllo (scusa il gioco di parole), che a volte è il Form.

    Quindi, per risolvere il tuo problema, basta che fai:
    codice:
    tablelayoutpanel.Controls.Add(miaListBox)
    miaListBox.Location = New Point(miaTextBox.Left, miaTextBox.Bottom)

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  4. #4
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,538
    Originariamente inviato da ShaleN
    Se non vado errato, la proprietà Location della classe Control non si riferisce al Form, ma al contenitore che contiene il controllo (scusa il gioco di parole), che a volte è il Form.

    Quindi, per risolvere il tuo problema, basta che fai:
    codice:
    tablelayoutpanel.Controls.Add(miaListBox)
    miaListBox.Location = New Point(miaTextBox.Left, miaTextBox.Bottom)

    ciao ShaleN, credo che intendesse fare una sorta di tendina per la textbox, in questo caso, se fa come hai suggerito tu, e ad esempio la textbox si trova nella seconda riga del tablelayoutpanel, non sarebbe più sotto, o comunque sarebbe spostato ecc...

    credo che lui voglia essere slegato da contenitori e affini, perlomeno così mi sembra di capire.

    se ho capito bene, la prima soluzione che mi viene in mente è questa :

    codice:
    Dim pS As Point = Me.textBox1.PointToScreen(New Point(0, 0))
    'punto attuale rispetto allo schermo
    Dim pC As Point = Me.PointToClient(pS)
    'punto dello schermo rispetto al client
    Dim p As Point
    p = New Point(pC.X, pC.Y + Me.textBox1.Height)
    'posizionamento al di sotto
    Me.listBox1.Location = p
    @Jacky87
    se ho capito male allora mi scuso con ShaleN per primo, e con te.

    EDIT : Versione breve :
    codice:
    Dim pC As Point = Me.PointToClient(Me.textBox1.PointToScreen(New Point(0, 0)))
    Me.listBox1.Location = New Point(pC.X, pC.Y + Me.textBox1.Height)

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    103
    Ciao ShaleN e U235, in effetti ci ha preso ShaleN, se inserisco il controllo nel tanbelayout non va bene. Voglio proprio fare una sorta di tendina che viene visualizzata sotto alla textbox quando si digita del testo.



    Grazie mille funziona alla perfezione il codice di U23.

    PS: mi scuso per il post nella sezione sbagliata e grazie per la correzione del titolo.


  6. #6
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,538
    Originariamente inviato da Jacky87
    Ciao ShaleN e U235, in effetti ci ha preso ShaleN, se inserisco il controllo nel tanbelayout non va bene. Voglio proprio fare una sorta di tendina che viene visualizzata sotto alla textbox quando si digita del testo.



    Grazie mille funziona alla perfezione il codice di U23.

    PS: mi scuso per il post nella sezione sbagliata e grazie per la correzione del titolo.

    invertendo l'ordine dei fattori il risultato non cambia...
    l'importante è che ci sei riuscito


  7. #7
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Ok, non avevo pensato al fatto che la TextBox può essere vicino al margine inferiore del contenitore
    Grazie a U235 per la soluzione, me la segno nel caso dovesse tornarmi utile.

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  8. #8
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,538
    Originariamente inviato da ShaleN
    Ok, non avevo pensato al fatto che la TextBox può essere vicino al margine inferiore del contenitore
    Grazie a U235 per la soluzione, me la segno nel caso dovesse tornarmi utile.

    ciao ShaleN, spero "me la segno..." non sia una minaccia scherzo ovviamente

    ti ammiro per le tue tante soluzioni date, la qualità e semplicità di esse, e sopratutto per la grande disponibilità che dai.


  9. #9
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Originariamente inviato da U235
    ti ammiro per le tue tante soluzioni date, la qualità e semplicità di esse, e sopratutto per la grande disponibilità che dai.
    Stiamo parlando della stessa persona?

    Comunque ti ringrazio e ricambio. Ciao a tutti.

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.