• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

[C#] Mehrere Pannels in eine Form

Cyperfriend

Der ohne Avatar

Registriert
14 Juli 2013
Beiträge
1.123
Ich weis gar nicht wie ich das richtig beschrieben soll und deswegen weis ich nicht, wonach ich eigentlich suche.
Ich möchte im Grunde verschiedene Panels in eine Form integrieren und je nach Gegebenheit die Benötigte anzeigen lassen. Ich habe zwar Tutorials gefunden, aber das sind alles mehr oder weniger schlechte Workarounds. Professionell wirkt das nicht. Hier sind zwei Beispielvideos, die zeigen was ich machen will, aber ich denke dass das besser zu lösen wäre.

Video 1
Video 2
 

alter_Bekannter

N.A.C.J.A.C.

Registriert
14 Juli 2013
Beiträge
4.823
Ort
Midgard
Da ist afaik outdated und hat keine richtigen Support mehr. Also kann es durchaus sein das es da nur "beschissene" Lösungen gibt.

WPF sollte man da nutzen. Da geht das mit pages.
 

KaPiTN

♪♪♫ wild at heart ♪♫♫♪

Registriert
14 Juli 2013
Beiträge
29.138
@Cyperfriend:

Du möchtest die View Deiner Form während der Laufzeit ändern. Die beiden Lösungen sind beide geeignet, also entweder Reiter mit dem TabpageControl, oder halt die Panels übereinanderlegen.

Bleib mal bei WinForms. Da kann man das Design über Code festlegen. Du mußt Dich da nicht ohne Not auch noch mit XML auseinandersetzen
 

KaPiTN

♪♪♫ wild at heart ♪♫♫♪

Registriert
14 Juli 2013
Beiträge
29.138
Nein, impliziert es nicht. Aber wie ich ihn kenne, möchte er eine für ihn rasche praktikable Lösung und keine weitere Baustelle.
 

Cyperfriend

Der ohne Avatar

Registriert
14 Juli 2013
Beiträge
1.123
  • Thread Starter Thread Starter
  • #8
Vor allem brauche ich Lösungen, die nicht komplex sind und nicht viel Code erfordern und leicht verständlich sind, weil ich rasch den Überblick verliere und überfordert bin. Ich bin nunmal kein Programmierer.
Das aber diese "Frickellösungen" gut sein soll ist für mich schwer nach zu vollziehen. Es gab doch auch schon früher Programme deren GUI sich zur Laufzeit änderte. Wenn ich jetzt Panels übereinander lege bekomme ich spätestens dann die Krise, wenn ich irgendwann vier oder fünf übereinander liegen habe und an der ersten Änderungen vornehmen will.

Ein schönes Video einer GUI gibt es hier, nur leider macht der Autor nicht weiter und lässt die GUI zur Laufzeit je nachdem was er anklickt nicht ändern. Schade.

@KaPiTN: Die Sache mit dem dynamischen Media Player ist noch nicht vom Tisch. Nur aktuell habe ich den Eindruck, dass ich dazu nicht bereit bin und ein bisschen fehlt auch die Motivation. Ich wollte mir nur grad schnell ein kleines Programm zusammenzimmern und bin eben auf dieses Problem gestoßen.
 
Zuletzt bearbeitet:

KaPiTN

♪♪♫ wild at heart ♪♫♫♪

Registriert
14 Juli 2013
Beiträge
29.138
Ich weiß nicht, was daran eine Frickl-Lösung sei soll (Man könnte die Tab-Lösung auch ohne Tabs gestalten, mit einem modifiziertem Tabcontrol)

Aber ohne zu wissen, was Du machen willst, ist das wie eine Antwort zu finden, auf eine Frage, die man nicht kennt. :unknown:
 

Cyperfriend

Der ohne Avatar

Registriert
14 Juli 2013
Beiträge
1.123
  • Thread Starter Thread Starter
  • #10
Naja, wie gesagt: Ich möchte die GUI ändern.
Am einfachsten lässt sich das vielleicht mit den Einstellungen beim firefox vergleichen. Je nachdem was ich auswähle (Allgemein, Suche, Inhalt, Anwendungen, Datenschutz, [...]) wird in der rechten Fensterhälfte ein anderer Inhalt angezeigt. (Das Firefox anders programmiert wurde weis ich selber, wollte ja nur veranschaulichen was ich genau meine)
 

KaPiTN

♪♪♫ wild at heart ♪♫♫♪

Registriert
14 Juli 2013
Beiträge
29.138
Das geht doch hervorragend mit beiden genannten Methoden.

Darf ich eine Vermutung äußern?

a) An der Tabvariante stören Dich die Tabs. Du willst ja über z.B. Buttons die View wechseln.

b)An der Panelvariante stört Dich, daß Du nicht weißt, wie Du im Designer mit mehreren Panels umgehen sollst, die alle übereinander liegen.

Sollte dem so sein, so habe ich für beides eine Lösung. ;)

Oder was ist sonst das Problem?
 

Cyperfriend

Der ohne Avatar

Registriert
14 Juli 2013
Beiträge
1.123
  • Thread Starter Thread Starter
  • #12
Beides richtig ;)
Bei Variante 2 weis ich schon, dass ich die Panels auch alle wieder wegverschieben könnte und wie ich sie ein und ausblenden kann, aber ich finde das Umständlich, zumal ich ja auch jemand bin, der ständig irgendwas hinzufügt, wegnimmt, anders anordnet, usw.
 

KaPiTN

♪♪♫ wild at heart ♪♫♫♪

Registriert
14 Juli 2013
Beiträge
29.138
@Cyperfriend:

Du mußt da nix verschieben. Dafür gibt es die Ansicht "Document Outline" im VS

cyperfriend.png

Beides mal in ein Beispiel gepackt. ;)
Anhang anzeigen multiview4cyperfriend.rar


@alter_Bekannter:

Es spricht nichts grundsätzliches gegen Pages, aber der Umgang mit WPF ist sehr unterschiedlich zu dem mit Windows Forms und er hat damit noch nicht gearbeitet. Somit wird er auf diese Weise schneller zu einem Ergebnis kommen.
 

Cyperfriend

Der ohne Avatar

Registriert
14 Juli 2013
Beiträge
1.123
  • Thread Starter Thread Starter
  • #15
Danke. Ich versuche das gerade nachzubauen und breche mir einen dabei ab die Komponente "TablessTabControl" zu erstellen. Wie hast du das den gemacht?
 

KaPiTN

♪♪♫ wild at heart ♪♫♫♪

Registriert
14 Juli 2013
Beiträge
29.138
Füge im Solution Explorer über Rechtsklick auf das Projekt ->Hinzufügen -> Klasse , eine neue Klasse hinzu.
Dann übernimm den Code aus dem Beispiel. Wenn Du dann im SolutionExplorer das Projekt neu erstellen läßt, erscheint das Control in der Toolbox und Du kannst es auf Deine Form ziehen.
 

Cyperfriend

Der ohne Avatar

Registriert
14 Juli 2013
Beiträge
1.123
  • Thread Starter Thread Starter
  • #17
Danke. Habs hinbekommen. Was ich aber mal überhaupt nicht verstanden habe ich der Code. Nach dem Klassennamen setzt es eigentlich schon aus. Wenn da mal wenigstens irgendwas mit "hide tab" oder so stehen würde, aber das ist ja irgendwie total kryptisch.
[src=csharp] class TablessTabControl : TabControl
{
protected override void WndProc(ref Message m)
{
// Hide tabs by trapping the TCM_ADJUSTRECT message
if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
else base.WndProc(ref m);
}
}[/src]
 

KaPiTN

♪♪♫ wild at heart ♪♫♫♪

Registriert
14 Juli 2013
Beiträge
29.138
Eine Funktion "hide tab" gibt es nicht, weil das Entfernen der Tabs bei einem Tabcontrol normalerweise keinen Sinn ergibt. Also ist so etwas auch nicht vorgesehenen und MS hat dafür keine Funktion Wie auch letztens, als wir Panels die Möglichkeit von Transparenz gegeben haben, benutzen wir Code, um etwas nicht standardkonformes zu erreichen.
Manche würden so etwas vielleicht auch einen Hack nennen.

Eine Anwendung muß vom Betriebssystem Informationen über Ereignisse erhalten. Denn Du willst ja nicht ständig Dein Programm überprüfen lassen, ob sich z.B. die Maus bewegt hat.

Die Controls haben die Funktion WndProc implementiert, die die Verarbeitung/Weiterleitung der Messages
Unser TablessTabControl erbt diese Funktion von TabControl.
Man kann geerbte Funktionen aber abändern, in denen man sie überschreibt. ("override")

Das machen wir hier. Wenn wir nur den else-Zweig hätten, dann hieße die Funktion

[src=csharp]protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
}[/src]

Damit hätten wir eine geänderte Funktion, die aber eigentlich nur die ursprüngliche Funktion aufruft.
Mit einer Ausnahme wollen wir das auch so. Nur bei einer bestimmten Windows-Message wollen wir etwas anderes. Wir filtern also eine bestimmte Nachricht, die dazu führen würde, daß die Fläche für den ausgewählten Tab berechnet würde.
 

Cyperfriend

Der ohne Avatar

Registriert
14 Juli 2013
Beiträge
1.123
  • Thread Starter Thread Starter
  • #19
Und woher hat man die Informationen die man braucht um zu filtern? Also woher weist du, dass du das hier schreiben musst?
[src=csharp]m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1[/src]
 

KaPiTN

♪♪♫ wild at heart ♪♫♫♪

Registriert
14 Juli 2013
Beiträge
29.138
Da wären z.B.
MSDN
Erfahrung
oder in diesem Fall Google
 
Oben