» »

[c#] združitev scroll bara in panela ali podobnega gradnika

[c#] združitev scroll bara in panela ali podobnega gradnika

japol ::

Imam majhno formo, a veliko ukazov. Kako narediti površino, na kateri bo veliko gradnikov (label, textbox, button,...). Tako kot ima to narejeno VLC, v nastavitvah, ko izbereš da prikaže več možnosti. Na desni se tako pojavi veliko ukazov in če jih je preveč za prikaz na frmi, se ustvari scroll bar. Po možnosti da se pri gradniku izbere to, ne pa da je potrebno napisati kodo.
Kot to:

Kako ste vi to izvedli? Kaj je najboljša možnost?
A je kaj drugače če za Winformo ali pa WPF?

sebastjan28 ::

V WPF, bi verjetno bi najlažje dosegel željeno, da Grid(ki mu nastaviš neko fiksno velikost) preprosto vstaviš v ScrollViewer.

Nekaj v stilu:
<ScrollViewer HorizontalScrollBarVisibility="Visible">
   <Grid x:Name="MyGrid" HorizontalAlignment="Left" Height="535" VerticalAlignment="Top" Width="736" Margin="10,63,0,0">
      <Grid.Resources>
         <Style TargetType="{x:Type Panel}">
            <Setter Property="Margin" Value="0,0,0,6" />
         </Style>
      </Grid.Resources>
      <Grid.ColumnDefinitions>
         <ColumnDefinition/>
         <ColumnDefinition/>
         <ColumnDefinition/>
         <ColumnDefinition/>
         <ColumnDefinition/>
      </Grid.ColumnDefinitions>
   </Grid>        
</ScrollViewer>


Za WinForm se sicer ne spomnim več dobro, vendar mislim, da vsaj eden izmed Panelov vsebuje Property, kjer nastaviš, da se prikaže Scroll Bar.

Zgodovina sprememb…

japol ::

Eden izmed panelov? Upam na rešitev brez kode, da v properties izberem pa samo namečem notri ukaze pa je.
Pa še nekaj: kaj si sedaj an wpf? zakaj? Si winform čisto opustil,... ali kako? Malo mi razloži prosim, zakaj iti na wpf?

amacar ::

Google pravi
this.panel1.AutoScroll = true;



Bear in mind that your controls will need to be anchored to the Top of the Panel to cause Vertical scroll bars automatically, and the Left of the Panel to cause Horizontal scroll bars automatically. If Anchor is set to None that control will be ignored by AutoScroll. I tried to add this to the answer but it was rejected.

japol ::

Točno to sem uprabil. Trenutno je še najboljša možnost, edino kar me še moti je to, da ko premikam scroll bar, se ne premikajo ukazi v realnem času ampak se prikažejo šele ko spustiš scroll bar.

sebastjan28 ::

japol je izjavil:

Eden izmed panelov? Upam na rešitev brez kode, da v properties izberem pa samo namečem notri ukaze pa je.
Pa še nekaj: kaj si sedaj an wpf? zakaj? Si winform čisto opustil,... ali kako? Malo mi razloži prosim, zakaj iti na wpf?


6-7+ let ne delam več v WinForms. WinForms so bile, že v osnovi osnovane samo kot začasna alternativa. Ker je omenjena alternativna tehnologija prišla na police precej kasneje, kakor je bilo načrtovano je WinForms precej bolj razširjen, kakor naj bi bil. No tudi ni pomagalo dejstvo, da je vsaj nekaj prvih let imel WPF ogromno performančnih težav pa tudi učenje je vse prej kakor enostavno,...

Največji plus je definitivno fleksibilnost in XAML(ki spominja precej bolj na HTML). Seveda ima vsa ta "svoboda" tudi svojo ceno,...

Verjetno mora obstajati tudi Property kjer izključiš omenjeni Deferred scrolling.

V najslabšem primeru verjetno lahko poslušaš spremembo trenutno izbrane vrednosti scrollbar-a is ročno "prisiliš" panel, da osveži vsebino.

Zgodovina sprememb…

japol ::

- Kako v wpf narediš da ti gradnike ne lepi v vogale? Vse kar dodam na npr. wrapPanel, postavi v vogale in nikar da premaknem.
- Zakaj npr. ne prikaže robove ScrollViewerja v debelini in barvi kot se jo izbere?

darkolord ::

japol je izjavil:

- Kako v wpf narediš da ti gradnike ne lepi v vogale? Vse kar dodam na npr. wrapPanel, postavi v vogale in nikar da premaknem.
Odmike lahko nastavljaš z margin (odmik kontrole) in padding (odmik vsebine). Pa še alignment, seveda.

Jaz sicer navadno začnem z gridom, da formo razdelim na osnovne dele, potem pa naprej.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

winform proti wpf

Oddelek: Programiranje
151686 (1250) norcuron
»

C# WPF nalaganje info. iz XML dokumenta

Oddelek: Programiranje
61038 (858) MrStein
»

[Visual C++ MFC] Spin control

Oddelek: Programiranje
51494 (1299) roba87
»

Pomoč pr visual studio

Oddelek: Programiranje
131681 (1026) rustypac
»

[c#]utripanje forme

Oddelek: Programiranje
5855 (760) Ericssony

Več podobnih tem