Laden...

Forenbeiträge von Darth Maim Ingesamt 216 Beiträge

04.01.2012 - 13:47 Uhr

Was wird den für dich einfacher wenn du structs anstatt von Klassen benutzt?

Ich würde statt der List<MapRows> die es dann wohl gibt evtl. einfach MapCell[,] map = new MapCell[mapWidth, mapHeight] oder, wenns eine List sein soll, direkt eine List<List<MapCell>> benutzen, da ich keinen Vorteil in der Klasse MapRow sehe, aber ich kenne ja auch deinen spezifischen Anwendungsfall nicht, ansonsten ist aber die Vorgehensweise nicht verkehrt.

Einzige Anmerkung noch: Wenn deine Klasse MapCell nur die TileID hat, reicht dir eventuell auch ein 2 dimensionales Integer-Array, wenn du nicht vor hast, den MapCells später noch andere Eigenschaften zu geben.

Darth Maim

03.01.2012 - 15:30 Uhr

Du nimmst deinen Richtungsvektor, normalisierst den, sprich bringst den auf die Länge 1, und dann multiplierst du den Vektor mit deiner Geschwindigkeit. Dann addierst du auf deine aktuelle Position diesen Vektor und erhältst die neue Position.

Darth Maim

27.12.2011 - 14:32 Uhr

Und einfach document.location = BaseUri + 'customstatistics/{0}/{1}'.format(id, statMode) funktioniert nicht? Normalerweise öffnet sich der Downloaddialog ja auch bei einem Klick auf einen "normalen" Link, also nichts mit AJAX, und der Browser zeigt nur den Downloaddialog an und bleit ansonsten auf der Seite. Habe das jetzt nicht getestet.

Darth Maim

25.12.2011 - 23:30 Uhr

Ist auf den anderen Rechnern den das XNA-Framework installiert? Ohne gehts nicht.

Darth Maim

22.12.2011 - 18:23 Uhr

Und den Button einfach mit this.Dock = DockStyle.Top oben im Flowpanel andocken?

Darth Maim

08.12.2011 - 20:29 Uhr

An welcher Stelle hängst du den? Bitte schreibe immer was du bisher versucht hast und was dabei für Fehler auf getreten sind.

Sowas in der Richtung:

WebClient wc = new WebClient();

string localVersion = "1.0a";
string serverVersion = wc.DownloadString("www.meinUpdateServer.de/version.txt");

if(string.Compare(serverVersion, localVersion) > 0) {
    Console.WriteLine("Neue Version verfügbar: {0}", serverVersion);
    //... Update usw. ...
} else {
    Console.WriteLine("Du hast bereits die neuste Version!");
}

Darth Maim

05.12.2011 - 13:20 Uhr

Du kannst doch Cursor.Current auch für ein Control setzen, das muss doch nicht für die ganze Form sein. (Control.Cursor-Eigenschaft)

Darth Maim

05.12.2011 - 13:12 Uhr

Implementiere mit deinen Klassen ein Interface, welches die Eigenschaften ID, ... hat.

Dann kannst du in deiner Methode folgendes Benutzen:

private string getIdFromSelected(Object item)
{
     return ((IMyInterface)item).ID.toString();
}

, da alle Objekte die du der Funktion übergibts das Interface IMyInterface implementieren und so die Eigenschaft ID haben.

Darthmaim

04.12.2011 - 12:17 Uhr

Oder mal versucht den client.Proxy auf null zusetzen?

Darthmaim

24.11.2011 - 16:27 Uhr

Im MouseMove-Event der Form bekommst du mit e.Location die Position der Maus relativ zu deiner Form.

Darthmaim

11.11.2011 - 15:20 Uhr

Weil nur die neu hinzukommenden Flächen neu gezeichnet werden. Versuch im ResizeEvent (oder dem entsprechendem Event, bei dem du neu zeichnen musst), this.Invalidate() aufzurufen, dass zeichnet dann das komplette Control neu.

Darth Maim

03.11.2011 - 22:16 Uhr

Du initialisierst dein Array mit der Größe [18, 2], dass heißt die Indices gehen von [0, 0] bis [17, 1].

Darth Maim

24.10.2011 - 21:53 Uhr

Guck dir einfach die MAC Adresse hinter 192.168.1.60 an, ob diese zum ServerA oder ServerB gehört (gesetzt dem Fall, dass diese nicht 00-00-00-00-00-00 ist, wie nbtstat anzeigt).

Darthmaim

28.09.2011 - 17:43 Uhr

Ich denke er meint Hole Punching 😃

Darthmaim

11.08.2011 - 15:46 Uhr

Du kannst mit der Reihnfolge der Controls ein bisschen rumspielen, dann kann dein Panel mit Dockstyle.Bottom auch die anderen Controls überlagern.

Darth Maim

01.07.2011 - 14:50 Uhr

Dafür ist bei der TextBox die Eigenschaft AcceptsTab zuständig, allerdings auch nur wenn diese auf Multiline gestellt ist. Bei der MaskedTextBox lese ich grade, das die Eigenschaft nicht unterstützt wird (MaskedTextBox.AcceptsTab-Eigenschaft)

Die AcceptsTab-Eigenschaft wird von der TextBoxBase-Basisklasse geerbt. Da jedoch das MaskedTextBox-Steuerelement keine mehrzeilige Konfiguration unterstützt, wird diese Eigenschaft nicht unterstützt.

Vielleicht kannst du eine eigene Klasse von der MaskedTextBox ableiten und da schon im WndProc die "Tab-Message" abfangen? Oder du verwendest statt der MaskedTextBox eine "normale" multiline-TextBox...

Darth Maim

08.05.2011 - 16:54 Uhr

Im KeyDown setzt du einen Geschwindigkeitvektor deiner Spielfigur auf 1 nach rechts, beim KeyUp dann wieder auf 0.

In einem Timer bewegst du dann die Spielfigur regelmäßig um die Geschwindigkeit.

Das mit der Schleife in dem Event vergisst du mal schnell wieder.

DarthMaim

03.05.2011 - 16:52 Uhr

Ich kenne das auch, grade wenn ich zulange an immer dem gleichen Projekt gearbeitet habe. Dann such ich mir ein anderes Projekt oder mach mal was ganz anderes, und nach so einer Woche bis 1 Monat kann ich dann wieder wunderbar weitermachen, wenn ich mich nicht darüber aufrege was ich da für einen Müll fabriziert habe 😉

Also immer mal wieder was anderes machen und nicht ein Projekt verbissen versuchen zu beenden, wenns dann mal nicht weitergeht ist man sehr frustriert und unmotiviert. Ist man aber ganz frisch wieder an einem Projekt, habe ich auch kein Problem mich über längere Zeit mit einem Problem zu beschäftigen und es macht wieder richtig Spaß.

Darth Maim

23.04.2011 - 04:11 Uhr

Guck dir mal diesen Thread an: Andere Anwendung mit C# öffnen.

Gleiches Java Programm usw., wenn ich das richtig gesehen habe beim Überfliegen, kannst du da nicht auf StandardInput zugreifen.

Darth Maim

12.04.2011 - 18:53 Uhr

Ich glaube mit der Eigenschaft Locked kann man einstellen, dass keine Eigenschaften mehr verändert werden können, also auch nicht die Größe. Kann man glaube ich auch mit einem kleinem Schloßsymbol im Designer machen, wenn man die Form ausgewählt hast. Vielleicht hast du da ausversehen draufgeklickt.

Darth Maim

12.04.2011 - 16:47 Uhr

Hallo ludden,

zum einen guck die mal diesen Thred an, den wir hier vor kurzem hatten: if-schleife mit vielen String-Bedingungen abkürzen....

Zum anderen kann man die switch-Anweisung folgendermaßen verkürzen:

switch(i) {
  case 1:
  case 2:
  case 4000:
  case 1337:
  case 100:
    foo();
    break;
}

Dein unteres Beispiel lässt sich so umsetzen:

int[] bla = new int[] { 1, 2, 4000, 1337, 100 };

if(bla.Contains(i))
  foo();

Edit: Beziehungsweise, näher an deinem Beispiel, wenn auch meiner Meinung nach nicht übersichtlicher:

if((new int[] { 1, 2, 4000, 1337, 100 }).Contains(i))
  foo();

Ich hoffe ich konnte dir helfen,

DarthMaim

24.01.2011 - 00:39 Uhr

In "Katze fuettern" this.schnurren() oder wie auch immer deine Methode heißt aufrufen.

Darth Maim

13.01.2011 - 17:46 Uhr

Du kannst in deinem Programm wenn du eine Adminoperation ausführen willst das Programm selbst wieder aufrufen und diesem mit einem Startparameter sagen, was es machen soll. In deinem eigenen Programm wartest du dann bis der neue Process beendet wurde und machst dann mit den Sachen weiter, die keine Adminrechte brauchen. Da brauchst du dann nicht noch ein zusätzliches Programm.

Darth Maim

06.01.2011 - 14:21 Uhr

Willst du den User Agent mit deinem Programm ermitteln oder willst du nur wissen wie der bei dir aussieht, um ihn dann in deinem Programm zu verwenden?

Für zweiteres geht das zum Beispiel mit Wireshark, oder für Speziell FF einfacher mit dem Plugin Firebug, das dir die ganze Netzwerkkommunikation schön übersichtlich anzeigt. Außerdem kann Firebug noch viele andere tolle Sachen.

Um den User Agent mit Hilfe deines Programmes auszulesen, fällt mir jetzt nichts ein als irgendeinen unbenutzten Port abzuhören und dann Firefox zu starten und als Startparameter "http://127.0.0.1:PORT/" zu übergeben. Dann bekommst du in deinem Programm den Anfrage Header. Als Antwort könnte man dann ein kleines Javascript zurückgeben, dass den Tab wieder schließt. Ist allerdings keine sehr schöne Lösung.

03.01.2011 - 18:57 Uhr

Um aus dem intern in der Textboxstehenden String "\uf3c4\uf38f\uf385" den String "\uf3c4\uf38f\uf385" zu machen, was 3 Buchstaben entspricht, sollte

output = input.Replace("\\", "\")

reichen. Zumindest bin ich der Meinung das ich das selber so schon mehrmals gemacht habe.

Darth Maim

02.01.2011 - 17:14 Uhr

Schreib dir einfach mit einem BackgroundWorker selber einen Download der den Status zurückgibt, sollte auch viel bei Google zu finden sein. Aber ob jetzt 2 Downloads die komplette Bandbreite auslasten oder 80, macht bei der Gesamtdauer keinen Unterschied (Wenn sie den zur Zeit mit der maximal verfügbaren Geschwindigkeit laden).

Darth Maim

31.12.2010 - 19:21 Uhr

Das ist doch jetzt Code, der in einem 2. Thread ausgeführt wird, oder? Dann knallts vielleich da:

label4.Text = comboBox1.Items[j].ToString();

Sollte aber eigentlich eine Fehlermeldung geben und nicht von der Sichtbarkeit irgendeiner Textbox abhängen...

Kommt das Programm überhaupt in die Schleife oder ins if - setz mal BreakPoints und guck dir genau an was da passiert. Vielleicht hat die Combobox wenn sie nicht angezeigt wird keine Items - dann würde er nicht in die Schleife gehen => BreakPoint und alle Variablen mal überprüfen.

Darth Maim

31.12.2010 - 15:38 Uhr

Und wenn du bei SelectedIndexChanged von der Combobox das ausgewählte item in eine Variable schreibst und immer mit der Variable vergleichst?

Darth Maim

16.12.2010 - 20:12 Uhr

Sollte mit

collection.Where((o) => { return o.name == "hallo"; });

einfach gehen,
bzw.

return o.name == "hallo" || o.email = "hallo" || o.alter.ToString() == "hallo" || o.anmeldeDatum == DateTime.Parse("hallo");

wenn du in allen properties suchen willst.

Darth Maim

15.12.2010 - 13:15 Uhr

Du gibst auf deiner Seite die Lösung einfach als text aus... Mit ASP.NET habe ich mich leider noch nicht beschäftigt, aber eine einfache Lösung wäre folgendes (Beispiel mit php...):

//An der Stelle an der du was ausgerechnet haben willst
int Zahl1 = 40;
int Zahl2 = 2;

WebClient wc = new WebClient();
string Lösung = wc.DownloadString(string.Format("http://pfad.zu.deiner.seite/add.php?zahl1={0}&zahl2={1}", Zahl1, Zahl2);

//Lösung anzeigen ...

der Code auf deiner Seite müsste ungefähr so aussehen (php)
[php]<?php
echo ($_GET['zahl1'] + $_GET['zahl2']);
?>[/php]
In dem Beispiel würde auf deiner Seite dann die 42 stehen, und in deinem Programm dann in dem string Lösung.

07.12.2010 - 00:09 Uhr

Ich denke eher, dass es beim ersten Mal nach dem Starten der Client Applikation etwas länger dauert.

Ich kenne mich mit WCF jetzt nicht so aus, aber bei allen sonstigen Sachen, zum Beispiel beim WebClient dauert die erste Anfrage immer so lange, weil der WebClient nach einem globalen Proxy sucht. Also bei deinem Client mal den Proxy auf null setzen, wenn es denn sowas gibt. Kann aber auch sein das ich total daneben liege 😃

06.12.2010 - 16:24 Uhr

Könntest du deine Lösung bitte nochmal posten?

Darth Maim

05.12.2010 - 00:00 Uhr

Mach alle Checkboxen in ein Dictionary<string, CheckBox>, dann kannste ganz einfach drauf mit CheckBoxen["name1"].Checked dadrauf zugreifen.

Darth Maim

24.11.2010 - 23:00 Uhr

ListViewStyle auf Details gesetzt?

02.11.2010 - 23:21 Uhr

Hallo,

vielleicht liegt das daran, dass der FTP Server zu dir trennt, weil du nichts neues überträgst.
Versuch einfach mal alle x Sekunden ein "NOOP" oder irgendein anderes Command an den Server zu senden. Vielleicht hilft das.

Darth Maim

25.10.2010 - 22:47 Uhr

Das müsste die Eigenschaft AllowUserToAddRows oder irgendwas in der Richtung sein, da macht der immernoch eine Zeile unten dran, um dem User die Möglichkeit zu bieten, neue Zeilen hinzuzufügen. Musst nochmal gucken wie die genau heißt, grad kein VS zu Hand...

25.10.2010 - 11:43 Uhr

Immer die gleiche Form nehmen und dann unterschiedliche Tabbelen benutzen sollte doch mit nem einfachen if umsetzbar sein. Da brauchst du doch keine Vererbung wenn sich nur der Content ändert. Wenn auf der Form unterschiedliche Steuerelemente sein sollen, würde ich das dann irgendwie mit UserControls lösen.

Darth Maim

01.09.2010 - 12:13 Uhr

"\b" ist wohl eine Escapesquenz, versuch mal statt "&quot; "\".

Darth Maim

31.08.2010 - 10:14 Uhr

Oder gib deinen beiden grauen Buttons mal die Bilder von den beiden anderen die gehen, und guck, ob es an den Bildern liegt (glaube ich aber nicht). Oder lösch die Buttons nochmal, kopier die, die gehen und änder dann das Bild wieder, vllt. geht es dann.

Darth Maim

27.08.2010 - 14:52 Uhr

Doch ist ne ganz normale Form mit UserControls, die wohl je nach Anzahl dynamisch erzeugt werden.

Darth Maim

26.08.2010 - 12:46 Uhr

Aber wenn du ein eigenes Control hast, müsstest du doch auch sagen, welcher Code bei einer bestimmten Tastenkombination ausgeführt werden soll, oder versteh ich nicht richtig was du willst? Willst du die Tastenkombination die gedrückt wurde nur in einer TextBox ausgeben oder Tastenkombinationen haben um irgendwas mit dem Inhalt deine r Textbox zumachen. Vllt. Solltest du das nochmal ein bisschen genauer beschreiben.

Darth Maim

26.08.2010 - 12:42 Uhr

Mit Scrollable = False und EnsureVisible(int) sollte das möglich sein, allerdings weiß ich nicht ob EnsureVisible noch funktionert, wenn Scrollable auf False gesetzt wurde.

Edit: Wenn Scrollable False ist, geht EnsureVisible wirklich nicht mehr...

Darth Maim

26.08.2010 - 12:27 Uhr

Ich seh da wirklich nicht wo der Aufwand groß sein soll...

private void Form1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    if (e.KeyData == (Keys.Control | Keys.Alt | Keys.D0))
    {
        //...
    }
    else if (e.KeyData == (Keys.Control | Keys.D6))
    {
         //...
    }
}

Darth Maim

26.08.2010 - 09:06 Uhr

DataAvailable eignet sich auch nicht, wenn nicht alle Daten am Stück ankommen.

Darth Maim

25.08.2010 - 23:50 Uhr

Vielen Usern kann die Anwendung auch "ganz normal" am Anfang den UAC Dialog zeigen, die sehen dann "Bitte Adminpasswort eingeben" und machen das dann erstmal ohne das weiterzuhinterfragen.
Wenigstens kommt da ein Dialog und nicht wie bei Windows XP wo sich ein Programm einfach so Adminrechte hat wenn der Benutzer Administrator ist.

BTT: Interessante und einfache Hilfsklasse die ich bestimmt auch mal Verwenden kann, bisher benutze ich sonst immer kleine Hilfsprogramme die die Aktionen, für die Adminrechte erforderlich sind, ausführen, so könnte ich mir das sparen, auch wenn ich es persönlich manchmal praktisch finde das man im UAC Dialog dann auch an meinem Dateinamen des Hilfsprogramm sieht, was es macht.

25.08.2010 - 11:48 Uhr

@Arithmetika: Bei der pictureBox gibt es soweit ich weiß kein AutoScroll...

Benutze zum Zeichnen lieber ein Panel oder ein eigenes UserControl.


zeichenFlaeche.AutoScroll = true;
zeichenFlaeche.AutoScrollMinSize = new Size(1000, 1000);

Damit wird die Größe der Zeichenfläche auf 1000x1000 gesetzt, während das Steuerelement trotzdem in seiner normalen größe (z.B. 100x100) angezeigt wird. Durch AutoScroll = true; werden dann automatisch Scrollbalken erzeugt. Wenn dein Zeichenbereich die komplette Form ausfüllt, zeichne am besten direkt in der Form, die kann auch AutoScroll.

Darth Maim

25.08.2010 - 08:32 Uhr

sr.EndOfStream gibt True zurück wenn grad keine Daten im Stream sind, auch wenn in einer Sekunde noch welche kommen würde, deswegen geht das so nicht... Besser sind die Asynchronen Mehthoden oder wenn dann ein boolean der in der schleife zum Beispiel auf false gesetzt wenn eine bestimmte Nachricht empfangen wurde oder ein Fehler aufgetreten ist.

24.08.2010 - 16:21 Uhr

Google kann das auch ausrechnen:

Google: 100 USD in Euro