Achtung Edit: schon gelöst (siehe unten)
Hallo zusammen,
ich versuche gerade eine GUI für eine Schachspiel mit Windows Forms zu erstellen.
Ich bin ein ziemlicher Neuling bei bezüglich WIndows Forms.
Ich habe dann im Designer einen TableLayoutPanel auf die Form gezogen und Dock auf FIll gestellt, damit der Panel immer die ganze Form ausfüllt.
Ich habe dann 8 Zeilen und Spalten eingestellt und die Größe jeweils auf 12,5% gestellt.
Ich füge dann in jede Zelle eine PictureBox hinzu:
for(int i = 0; i < 8; ++i)
{
for(int j = 0; j < 8; ++j)
{
PictureBox pb = new PictureBox();
picturesBoxes[i, j] = pb;
pb.SizeMode = PictureBoxSizeMode.Zoom;
pb.Image = bKingImg;
Size test = pb.MaximumSize;
chessBoardLayout.Controls.Add(pb, i, j);
}
}
Das ganze funktioniert zwar, aber wenn ich die Form etwas größer mache, sind zwischen den Bildern SEHR große Abstände sichtbar.
So sieht das dann aus:
http://s7.directupload.net/images/120223/obvyodvy.png
Ich habe auch schon versucht bei der PictureBox Margin auf 0 zu setzen und auch mit verschiedenen SizeModes der PicturesBoxes rumgespielt, aber das hat auch nicht geholfen.
Wisst ihr, was da lost ist? Was kann ich da machen?
Vielen Dank schonmal für eure Hilfe!
Edit: Habs rausgefunden.
pb.Dock = DockStyle.Fill; hats behoben
Sonnenschein5 schrieb:
Was ist der Unterschied zwischen den Beiden ( Vor/- und Nachteile)?
Die Liste ist lang. Sag lieber, was du genau mit der Datenbank vorhast (und nein, "Daten ablegen und wieder lesen" ist keine gute Antwort :P)
µ schrieb:
Optisch ansprechender finde ich aber die Unterscheidung über Groß-/Kleinschreibung im Anfangsbuchstaben:
Ich ebenso, und ich verwende den Resharper (Optionen sind schon was schönes)...
Ihr hattet Recht - es wurde als String und nicht als Variable übergeben *schäm*
Tut mir leid ...
Da hier dann aber der Vorschlag aufkam doch besser einen .Net Datenbanktreiber anstatt ODBC zu verwenden kam und folgende Idee:
Einträge (User, PW, Server) in der Registry und diese dann beim Programmstart auslesen. Funktionieren tut es auch bereits.
Trotzdem würde ich gerne wissen, was Ihr davon haltet ... ist das eine gute Lösung?
Hallo,
problem gelöst.
das funktiniert bei mir nur mit ShellExecute
CreateProcess liefert einnen Fehler 740 = "Der angeforderte Vorgang erfordert erhöhte Rechte."
Stimmt, logisch... habe mir jetzt mal die Mühe gemacht und das in einem kleinem Testcode nachvollzogen. Wenn ich die Sperre jeweils beim Iterieren und Schreiben auf's selbe Objekt setze, funktioniert's. Danke für Deine Anregungen
Achte bei deiner Bibliothek aber auf folgenden Umstand:
Was passiert, wenn der Ort an dem der Webservice installiert ist sich ändert?
Die Url, die aufzurufen ist sollte hier von vornherein konfigurierbar sein.
Okay, hab es umstrukturiert. Ist zwar sicher nicht übersichtlicher geworden, aber es klappt jetzt. An C# muss ich mich wohl erst noch ein paar Tage gewöhnen.
Danke.
Ich meine das so:
DoItUntilItFuckingWorks(task, timeout)
do
if (task())
return success;
while !timeout
return timeout_failure;
(Keine Ahnung was die für Timeouts am besten geeignetste Steady-Clock in C# ist, daher in Pseudocode. Sollte aber bei Bedarf schnell herauszufinden sein)
Das ist die (für mich) einzig "richtige" Antwort auf die Frage des OP: sie übersetzt einfach 1:1 das in Code, wonach er gefragt hat.
Falls er etwas anderes wissen will (was ich für leicht möglich aber bei weitem nicht sicher halte), dann hat er die Frage falsch formuliert.
Wie ihr hier auf Threads, Timer, Events etc. kommt, ist mir ein Rätsel.
OK, nicht ganz ein Rätsel, aber ihr geht hier von diversen höchst spekulativen Annahmen aus. Der OP soll lernen zu sagen was er genau will, inklusive nötigen Kontext. Das hilft ihm, und es hilft uns. Und mit ins Blaue raten verwirrt ihr ihn unter Umständen bloss, falls ihr daneben liegen solltet.
Hallo,
ich möchte gerne meine E-Mail Kontakte aus Outlook auslesen.
public static void AccessContacts()
{
Microsoft.Office.Interop.Outlook.Application appl = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.MAPIFolder folderContacts = appl.Session.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderContacts);
int count = folderContacts.Items.Count;
for (int i = 1; i <= count - 1; i++)
{
Microsoft.Office.Interop.Outlook.ContactItem c = (Microsoft.Office.Interop.Outlook.ContactItem)folderContacts.Items[i];
MessageBox.Show(c.LastName);
}
MessageBox.Show(count.ToString());
}
Es gibt zwar keine Fehlermeldung, dennoch werden auch keine Kontakte angezeigt bzw. der count bleibt bei 0.
Warum?
Hm, strange. Ich hatte das Interface in der Zwischenzeit mal rausgeschmissen, neu eingebaut, alles neu erzeugt und nun gehts auf einmal
(edit)
Der GUID Vergleich war übrigens identisch gestern
physikus schrieb:
Prinzipiell funktioniert das auch, aber ich habe nun alles auf einem Rechner. Entwicklungsumgebung, Website und Datenbank.
Später soll das alles getrennt sein. Entwicklungsumgebung auf Rechner A, Datenbank und "Installationsdateien" auf Rechner B. Von Rechner C möchte ich dann auf die DB zugreifen.
Was für Installationsdatein ? Ist das keine Website ?
Ansonsten Stichwort: 'ODBC'