View Full Version : [C#]Tab Control: creare un "menù" esterno
Mattyfog
22-01-2010, 17:22
Raga,
per evitare di incasinare a tutti la vita fin da subito inizio con una domanda semplice: c'è un modo per rendere il TabControl trasparente, in modo tale che si veda lo sfondo della form padre?
Mattyfog
23-01-2010, 15:23
UP :D
Certo, basta settare il colore di background = Transparent
In WPF qualcosa del genere
<Window x:Class="WpfApplication3.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Image Source="c:\temp\11035_200159327615_182936457615_3121250_7324477_n.jpg"></Image>
<TabControl Margin="0,0,0,39" Name="tabControl1" Background="Transparent" >
<TabItem Header="Primo">
</TabItem>
<TabItem Header="Secondo">
</TabItem>
</TabControl>
</Grid>
</Window>
http://img.photobucket.com/albums/v314/gugogugo/TransparentTab.jpg
Giocando con l'alpha channel puoi anche rendere la semitrasparenza
Mattyfog
23-01-2010, 17:29
io però non sto usando wpf ma una semplice progetto windows form..
come posso fare?
Hai guardato se puoi farlo allo stesso modo?
Mattyfog
23-01-2010, 17:37
Non lavorando in wpf non saprei dove inserire il codice xaml e se imposto dal riquadro delle proprietà backgroundcolor su trasparent non va.
Non lavorando in wpf non saprei dove inserire il codice xaml e se imposto dal riquadro delle proprietà backgroundcolor su trasparent non va.
Si', dicevo di impostare il colore, non di inserire il codice XAML :)
Peccato.
Mattyfog
23-01-2010, 17:49
Tra l'altro io posso impostare lo sfondo solo per le singole tab e non per l'intero tabcontrol. Ad ogni modo non va.
Mattyfog
23-01-2010, 18:12
Carissimi credo che alla fine trasferirò il progetto su wpf. C'è un modo semplice per farlo oltre al rifare tutto da capo ricopiando il codice? Considerate chwe anche ricopiarlo non dovrebbe essere lunghissimo...
Carissimi credo che alla fine trasferirò il progetto su wpf. C'è un modo semplice per farlo oltre al rifare tutto da capo ricopiando il codice? Considerate chwe anche ricopiarlo non dovrebbe essere lunghissimo...
Non mi risulta ci sia un traduttore.
Ti consiglieri di rifarlo daccapo, e nel frattempo magari di leggere anche qualcosa su WPF.
Si puo' usare "vecchio stile", facendo finta che sia una form, il cui codice XAML sia trattato un po' come la pagina pregenerata del codebehind delle vecchie Winform, che non leggerai quasi mai.
Oppure puoi anche prendere coscienza di questo XAML, vedendo quali possibilita' offre. E sono davvero tante.
Mattyfog
25-01-2010, 14:29
Credo che inizierò trattandola come una semplice form e dopo approfondirò l'argomento: adesso voglio un programma che funzioni bene, poi penserò alla grafica. :)
Grazie!
Mattyfog
25-01-2010, 16:05
Raga sto provando un po' a lavorare con xaml:
voglio impostare l'header del tabitem in modo che abbia un immagine ma che sia anche trasparente; per l'immagine sono a posto ma per la trasparenza non so come fare, suppongo di dover usare un file png, ma poi devo anche settare qualcosa. Ma che cosa?
<TabControl Name="tabControl1" Background="Transparent">
<TabItem Name="tabItem1">
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<Image Height="50" Source="Resources\Immagini\Menù\Cerca.png" />
<TextBlock Text="" Margin="0,0,0,0" VerticalAlignment="Center" />
</StackPanel>
</TabItem.Header>
<Grid />
</TabItem>
</TabControl>
Altra cosa, ho visto che con wpf non posso inserire tramite finestra di progettazione tutti i controlli. Cliccando con il destro sulla "Casella degli strumenti" e poi facendop visualizza tutto posso vedere tutti i controlli windows form, ma alcuni non me li lascia mettere. Perchè?
Raga sto provando un po' a lavorare con xaml:
voglio impostare l'header del tabitem in modo che abbia un immagine ma che sia anche trasparente; per l'immagine sono a posto ma per la trasparenza non so come fare, suppongo di dover usare un file png, ma poi devo anche settare qualcosa. Ma che cosa?
Puoi semplicemente usare un'immagine png (con la trasparenza corretta), e devi settare a Transparent anche il background del TabItem. That's all.
<Window x:Class="WpfApplication4.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid Height="317">
<TextBox Height="23" Margin="94,60,64,0" Name="textBox1" VerticalAlignment="Top" Text="ATTEMPT" IsReadOnly="True" BorderThickness="0" Grid.ColumnSpan="2" />
<Image Source="c:\temp\Money.jpg" />
<TabControl Height="100" Margin="12,108,66,108" Name="tabControl1" Width="200" Background="Transparent">
<TabItem Name="tabItem1" Background="Transparent">
<TabItem.Header>
<Image Source="C:\temp\find.png" Opacity="10" Width="41" />
</TabItem.Header>
<Grid />
</TabItem>
</TabControl>
</Grid>
</Window>
Altra cosa, ho visto che con wpf non posso inserire tramite finestra di progettazione tutti i controlli. Cliccando con il destro sulla "Casella degli strumenti" e poi facendop visualizza tutto posso vedere tutti i controlli windows form, ma alcuni non me li lascia mettere. Perchè?
Perche' devi usare i controlli WPF e non quelli Winform. Sono diversi. Dovrebbe poter vedere solo quelli che di volta in volta servono, ma ho visto cose nella casella strumenti che nemmeno al largo dei bastioni di Orione...
Mattyfog
25-01-2010, 19:17
ok grazie! però in wpf non c'è il web browser.. :( come faccio?
EDIT: riesco a metterlo con questo codice:
<StackPanel Name="panel">
<WebBrowser Height="400" Width="479" Source="http://www.youtube.it">
</WebBrowser>
</StackPanel>
ma non c'è un moido per metterlo come tutti gli altri oggetti, ossia nella finestra di progettazione senza codice?
ok grazie! però in wpf non c'è il web browser.. :( come faccio?
EDIT: riesco a metterlo con questo codice:
<StackPanel Name="panel">
<WebBrowser Height="400" Width="479" Source="http://www.youtube.it">
</WebBrowser>
</StackPanel>
ma non c'è un moido per metterlo come tutti gli altri oggetti, ossia nella finestra di progettazione senza codice?
Non ho capito cosa intendi.
Sotto WPF (come anche sotto WinForm) ci sono 2 file per ogni Window.
Il file dello XAML e il file del codebehind.
La finestra di progettazione non esiste, e' solo una preview di quello che otterrai. Qualcosa di piu' di una preview, dato che puoi modificare lo XAML giocandoci un po', ma alla fine sparisce. Quello che fa fede sono gli altri 2 unici file che restano.
E con il passare del tempo, esattamente come anche lo sviluppo per il WEB, la finestra di progettazione perde sempre piu' di significato, e ti ritrovi a scrivere il codice XAML direttamente, mentre la pagina di progettazione ti serve esattamente come per il WEB solo come preview in maniera piu' che altro (se non proprio solo) come output solo passivo.
Mattyfog
26-01-2010, 12:55
intendo, non cè un modo per inserire direttamente il webbrowser nella finestra di progettazione senza scrivere codice?
Puoi cliccare con il destro su una delle TAB della toolbox, e andare su
Choose Items. Al che scegli il WebBrowser, e questo dovrebbe comparirti nella toolbox pronto per essere drag-droppato nella finstra di progetto.
Ma come ti consigliavo prima, ti direi di lasciare perdere la finestra di progetto come input, ma solo come output, e di scrivere direttamente il codice XAML.
Mattyfog
26-01-2010, 13:32
il punto è che è già selezionato il webbrowser e nel menù appare.. solo che non posso inserirlo.. mi sfugge il termine ma mi compare la scritta webbrowser in grigetto come quando non la si può premere
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.