Wenn ich eine Zeile mehr einfüge als aktuell benötigt, müsste ich ein ColSpan für die erste Spalte setzen, welcher über alle Spalten geht. Da ich aber zur Laufzeit neue Zeilen hinzufüge, müsste ich das jedesmal beachten.
Außerdem wird der Tabellenrahmen gezeichnet, den würde man dann ja auch bei der (evtl. sehr hohen) letzten Zeile sehen.
Hallo,
ich habe folgende Situation: Ein TableLayoutPanel in einem UserControl. Das UserControl ist auf einer Form untergebracht (Anchor auf allen 4 Seiten).
Das TableLayoutPanel hat eine feste Anzahl an Spalten und eine dynamische Anzahl an Zeilen. Alle Zeilen sollen dieselbe Höhe haben. Die letzte Spalte soll Autosize sein, d.h. den verbliebenen Platz zur rechten Seite ausfüllen.
Zeilen kann man zur Laufzeit anfügend, d.h. das TableLayoutPanel kann zur Laufzeit höher werden.
Jetzt habe ich folgende Situationen schon gehabt:*Scrollbalken für die Höhe funktioniert, aber die letzte Spalte wird nicht automatisch breiter. *Kein Scrollbalken, dafür ist die letzte Spalte Autosize und (leider) auch die letzte Zeile Autosize.
Ich habe schon diverse Docking/Anchoring/Autosizing/Autoscrolling Möglichkeiten durchprobiert und keine führte zu einem ordentlichen Ergebnis.
Vielleicht kennt ja jemand genau dieses Problem und hat es schonmal gelöst.
Hallo,
ich habe einen Webservice via WCF erstellt und folgendes Problem:
Ich benötige dafür ein WSDL, was ich unserem Kunden zukommen lassen kann.
Rufe ich im IE http://localhost:8732/MyWebserivce/?wsdl auf, werden die Parameter der einzelnen Methoden nirgendwo im XML erwähnt.
Speichere ich den Seitenquelltext in einer Datei X.wsdl und generiere via
wsdl.exe /out:C:\x.cs C:\x.wsdl
die Code-Datei, bekomme ich eine Fehlermeldung:
Error: Die BasicHttpBinding_IWebServiceCustomer-Bindung von Namespace 'http:/
/XYZ.com' kann nicht importiert werden.
- Der CreateToken-Vorgang kann nicht importiert werden.
- Das Element 'http://XYZ.com:CreateToken' ist nicht vorhanden.
If you would like more help, please type "wsdl /?".
Verwende ich allerdings:
wsdl.exe /out:C:\x.cs http://localhost:8732/MyWebserivce/?wsdl
dann funktioniert alles bestens. Was holt sich denn die wsdl.exe noch alles vom Webserver um die Code-Dateien zu erzeugen? Muss ich eine weitere Seite im IE aufrufen um an alle weiteren Daten zu kommen?
Diese Lösung ist sicherlich das Optimum und wird bei neuen Programmteilen so angewendet. Wenn wir aber in älterem Code nachträglich eine Progressbar anzeigen wollen, ist eine Realisierung über backgroundworker usw. zeitlich nicht vertretbar.
Meinst du damit, ich soll die ProgressBarForm in einem separaten Thread erstellen und alle Methodenaufrufen per BeginInvoke machen?
Das eigentliche Problem ist ja, dass man den Abbrechen-Button in der ProgressBarForm nicht klicken kann, weil die Form blockiert.
Ich sehe nicht, wie dieser FAQ Eintrag mir weiterhilft.
Danke, das erklärt warum es blockiert.
Stellt sich nur noch die Frage, wie ich das Problem elegant löse.
Hallo,
Ich habe eine nicht-modale Form mit einer ProgressBar (FormProgressBar) und einem Abbrechen button.
Diese Form wird nur in einer speziellen Klasse ClassProgressbar instantiiert. Diese Klasse bietet die Methoden Start() und Stop(), sowie AdvanceStep() und das Property "Canceled".
Möchte man die ProgressBar benutzen, instantiiert man ClassProgressbar und ruft die Methode Start() auf (dort wird dann die Form mit .Show() aufgerufen, also nicht modal). Bei jedem Schritt im Hauptprogramm ruft man .AdvanceStep() auf und der ProgressBar bewegt sich weiter. Was aber nicht funktioniert ist der Abbrechen-Button, da die nicht-modale Form blockiert, wenn die andere Form die ProgressBar in einem Hauptthread verwendet:
Beispiel:
void button1_Click(object sender, EventArgs e)
{
ClassProgressBar bar = new ClassProgressBar(this); //this wird als owner gesetzt
bar.Start();
for (int i=0; i<=100; i++)
{
bar.AdvanceStep();
Thread.Sleep(200);
if (bar.Canceled) break;
}
bar.Stop();
}
in ClassProgressBar wird bei Start() die Show(IWin32Window owner)-Methode der Form aufgerufen.
Leider verstehe ich nicht, warum die nicht-modale Form blockiert. Die blockiert übrigens auch, wenn der owner nicht gesetzt wird. Haben nicht-modale Forms nicht einen eigenen UI-Thread?
Hat jemand da einen Lösungsvorschlag für mich? Auch wenn ich in besagter Schleife die Form direkt benutze, blockiert diese.
So, ich habe eine Testanwendung: http://rapidshare.de/files/49092516/TestApplication.zip.html
Das Problem tritt nur unter Windows Vista auf. XP und 7 haben das Problem nicht.
Die Textbox und der "..." Button passen ihre Größe nicht an, wenn man die Größe der Form verändert.
Benutzt man allerdings den vertikal Splitcontainer, funktioniert es korrekt,
Also das Resize Problem tritt tief in dem Control auf, dass der TabPage hinzugefügt wird. Das Control, das in der TabPage drin ist, funktioniert richtig. Aber in dem Control darin sind z.B. Textboxen, bei denen der Anchor nicht mehr richtig funktioniert.
Das Problem tritt allerdings nur unter Vista auf. Unter Windows XP funktioniert alles bestens.