Add tab   zodpovězená otázka

VB.NET, WinForms

Chtěl bych se zeptat, jde nějak udělat tkopie panelu v tabpanel.

Jinak řečeno, po stisknutí tlačítka vatvořit kopii tabu.

Pokud jde jak?

Nebo jaký je jiný způsob kopírování jedné věci v jednom okně?

(pookud kód bude ve wpf ještě lépe, jinak si nějak poradím)

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

jo a mám Visual Studio 2010 Beta 1 a kód ve vb nebude škodný, klidně to udělám jako winform

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

To nikdo neví nebo to nejde?

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

Řekl bych, že vám málo kdo, pokud vůbec někdo, rozumí a že nikdo nemá vaše přání chuť luštit a odpovídat. Teď si ještě dupnete tučným textem, abyste ukázal na ty blbce pod vámi, co vám nechtějí posloužit Měl bych odpověď: bežte jinam.

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

Promiňte ale tak jsem to nemyslel.

Jestli to mám vysvětlit ještě víc tak takhle:

1.Uživatel klikne na tlačítko

2.Provede se přidání nové kopie tabu v tabpanelu

A já potřebuji vědět, jestli jde nějak ta kopietabu v tabpanelu udělat a případně jak.

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

Určitě to jde, minimálně lze vytvořit novou TabPage, zklonovat všechny komponenty v kolekci Controls a naplácat je do nové TabPage. Ale možná to půjde nějak jednodušeji.

Je zde ale ještě jeden problém - co když budou mít komponenty za úkol něco dělat, pak je rozhodně zkopírovat nestačí a je nutné ještě nastavit obsluhu událostí.

Pokud už kopírovat taby musíte, pak doporučuji vše, co je uvnitř, dát do vlastní komponenty (přidáte do projektu novou User Control) a v TabPage mít jen tuto komponentu a nic jiného. Pak je kopírování celkem snadné - prostě vytvoříte novou TabPage, přidáte ji do kolekce Tabs komponenty TabControl a do té TabPage vytvoříte novou instanci vlastní komponenty, která obsahuje všechno.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Dobře, možná se mi to povede.

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

Ano, povedlo se mi to ale stále se ptám, jakým příkazem mám vlastně novou tabpage vytvořit (kódem)?

Jinak, děkuji.

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

I když... a do té TabPage vytvoříte novou instanci vlastní komponenety, které obsahuje všechno. jak do ní mám tu us.con. dát (promiňte ty blbé dotazy ale já to doopravdy nevím)

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

Třeba takhle (je to jen nakopnutí):

Private Function KreslitabPage(Byval as aPage as integer) as Boolean
    
	Dim TabPage1 As New System.Windows.Forms.TabPage
            
	form1.TabControl1.TabPages.Add(TabPage1)

 
        Dim inst As Object = form1.TabControl1.TabPages(aPage)
 
        KresliPrvky(inst)
	
	Return True
  
Exit Function 


Private Function KresliPrvky(ByVal inst As Object) as Boolean


 
        Dim txtData As New System.Windows.Forms.TextBox
        With txtData
             .Name = jmeno
		...atd.
              
        End With
                 
        inst.Controls.Add(txtData)
                 
                  
        AddHandler txtData.udalost, AddressOf nejakaSub

	Return True

Exit Function 
      

nahlásit spamnahlásit spam 3 / 3 odpovědětodpovědět

Děkuji za oznámkování. Uznávám, že kód není hezký, proto jsem napsala, že jde jen o nakopnutí. Oceňovatel zřejmě nepochopil, že se tady občas vyskytují začátečníci, kteří vůbec netuší, že se dají prvky dynamicky vykreslovat. Myslím, že pro ně je tento kód užitečný. Sama jsem, když jsem s VB.net začínala, jsem takovéto kódy ocenila.

Mohl by mi hodnotitel špatnou známku zdůvodnit?

P.S. Reagovala jsem konkrétně na odpověď: "Ano, povedlo se mi to ale stále se ptám, jakým příkazem mám vlastně novou tabpage vytvořit (kódem)?"

Pozn. 12.6. Původně jsem u prográmku měla hodnocení -1, proto jsem reagovala jak jsem reagovala

nahlásit spamnahlásit spam 3 / 3 odpovědětodpovědět

dobrý den, jsem evidentně začátečník, ale ani ve verzi MS Visual Basic 6.0 jsem nebyl schopen rozhýbat tablecontrol a ani s Vašim kódem se mi to nepovedlo. nechci nic míň, než přidat další tab za běhu programu po vzoru ff a ie. zkrátka chci si vytvořit vlastní webový prohlížeč tabulový.. :(

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Tento kód je určen pro Visual Basic 2005 a 2008. VB 6 je více než 10 let stará verze.

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

Můžete zkusit - na formu je TabControl1 s nějakým malým počtem stránek a MenuStrip1 s položkou "NovaTabPageToolStripMenuItem" pro přidávání stránek (do počtu 10):

Public Class Form1
  Dim r, m As Integer

  Private Sub Form1_Load(ByVal sender As Object, _
      ByVal e As System.EventArgs) Handles Me.Load
    r = Me.TabControl1.TabCount ' počáteční počet stránek 
    m = 10 ' max. počet stránek
  End Sub

  Private Sub NovaTabPageToolStripMenuItem_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles NováTabPageToolStripMenuItem.Click
    Dim p As Integer = Me.TabControl1.TabCount ' počet stránek
    If p = m Then
      NováTabPageToolStripMenuItem.Enabled = False
      Exit Sub
    End If
    Dim adr(m - 1) As String ' m omezuje počet stránek
    adr(0) = "http://vbnet.cz/"
    adr(1) = "http://vbnet.cz/forum-tema--2640-add_tab.aspx"
    adr(2) = "http://vbnet.cz/Search.aspx"
    adr(3) = "http://vbnet.cz/Forums.aspx"
    adr(4) = "http://vbnet.cz/kategorie--12.aspx"
    ' atd...
    ' ---- nová stránka
    Dim tb As New System.Windows.Forms.TabPage
    tb.Text = "TabPage" & p + 1
    Me.TabControl1.TabPages.Add(tb)
    Me.TabControl1.SelectTab(p)
    ' ---- nový browser:
    Dim wb As New WebBrowser
    tb.Controls.Add(wb)
    wb.Dock = System.Windows.Forms.DockStyle.Fill
    ' načtení webové adresy:
    If IsNothing(adr(Me.TabControl1.TabCount - r)) Then
      wb.Url = New Uri("about:blank")
    Else
      wb.Url = New Uri(adr(Me.TabControl1.TabCount - r))
    End If
  End Sub

End Class

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

POZOR! Vloudila se 2x čárka nad a v "NovaTabPageToolStripMenuItem" - "NováTab..." je tedy chyba!

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