MDI -> chyba přenosu mezi formuláři   zodpovězená otázka

VB.NET, WinForms

zdravím,

nevím proč nejede "starý" osvědčený způsob z VB5/6, ale nějak jsem se zamotal...

Mám frmMain => isMdiContainer = True

Mám frmText => je zde RichTextBox (RTB)

V hlavní liště (MenuStrip) na frmMain mám možnost výběru barvy. Vyberu si barvu a rád bych ji dal do RichTextboxu na formuláři frmText od místa, kde je myš (tj. ne na konec textu)

Zkoušel jsem ale bezúspěšně (google ani MSDN - nic rozumného co by jelo jsem nenašel)

    Private Sub VybratBravuToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VybratBravuToolStripMenuItem.Click

        If ColorDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            frmText.rtbText.Text &= Color2Html(ColorDialog1.Color)
        End If

    End Sub

PSko: Pokud jsem to dobře pochopil, tak &= to přidá k textu nový text

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nerozumiem úplne, čo chceš dosiahnuť. Aby od kurzoru bol text písaný vybranou farbou? Upresni to prosím.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mám hlavní formulář, který je MDI a v něm je MenuStrip. Po kliknutí na položku se provede následující kód:

    Public Function Color2Html(ByVal MyColor As Color) As String
        Return "#" & MyColor.ToArgb().ToString("x").Substring(2)
    End Function

    Private Sub VybratBravuToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VybratBravuToolStripMenuItem.Click

        If ColorDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            My.Forms.frmText.rtbText.Text += Color2Html(ColorDialog1.Color)
        End If

    End Sub

Tzn. mám v RichTextBoxu text:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi eget ligula. Curabitur fermentum. Quisque laoreet. Vestibulum ante ipsum primis in faucibus BARVA orci luctus et ultrices posuere cubilia Curae; Donec ut magna. Sed dictum, mauris id blandit elementum, diam metus semper nisi, id commodo sapien ante ut orci. Maecenas faucibus. Suspendisse potenti. Nunc eget tellus ac elit ultrices BARVA feugiat. Nam scelerisque. Aenean sit amet felis a elit commodo vehicula. Integer eros erat, consectetuer in, hendrerit tincidunt, semper sit amet, metus. In hac habitasse platea dictumst. Aenean gravida lectus vel justo. Vestibulum ut orci vitae lectus facilisis venenatis. Nunc iaculis. Etiam libero felis, BARVA dictum a, ornare ac, placerat vel, dolor. Donec vitae dolor commodo nibh suscipit condimentum. Quisque tincidunt dignissim ante. Ut sem orci, commodo eget, dictum et, commodo sit amet, mi.

Kde je slovo BARVA tam chci, aby se mi vložil výsledek té funkce, tj. text #FF00FF (jenže tu pozici si určím myší, kam si kliknu v textu)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Asi jsem nepochopil co přesně na kódu nejde. Můžete to blíže specifikovat? Hází to nějakou chybu nebo to dělá něco jiného než chcete?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nedělá to vůbec nic. Problém je ten, jak si předat nějakou hodnotu mezi fomruláři. Tj. jak jsem psal prvně, způsob z VB5/6 nejede ve VB.NET - tj. text1.text = frmForm.text2.text (tj. beru hodnotu z jiného formuláře)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Když zobrazujete formulář, musíte vytvořit objekt tohoto formuláře. To je jiné než ve VB6, tam stačilo Load frm a frm.Show. Ve VB.NET musíte udělat toto:

'deklarovat proměnnou mimo proceduru (globální deklarace)
Dim mujForm As frmForm

Zobrazení formuláře v nějaké proceduře:

mujForm = New frmForm()
mujForm.Show()

A pokud je formulář otevřený, můžete k němu kdykoli vpřistupovat, ale přes mujForm. Ve VB.NET si můžete totiž vytvořit více instancí toho samého okna a už by nebylo možné určit, se kterým chcete pracovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback