So etwas sollte eigentlich jedes mal überprüft werden, wenn in das Directory geschrieben wird, die Berechtigungen können sich ja auch ändern. Dann erübrigt sich ggf. die erste Prüfung.
Und über die Registry lässt sich auslesen, welches Icons für welchen Zweck verwendet werden, falls der Benutzer was umgestellt hat (wenn das überhaupt für Dich relevant ist)
Der Handler bekommt die falschen Argumente. Es handelt sich um einen einfachen System.EventHandler, der einfache System.EventArgs haben wil, keine MouseEventArgs.
Dann hast Du vermutlich noch ein Berechtigungsproblem.
Im Menü des RemoteDebug Monitor: Tools->Permissions:
Hier muss der Benutzer eingetragen werden, der auf dem Client das VisualStudio startet.
Außerdem darf natürlich keine Firewall den Datenverkehr blockieren (ich weiß aber jetzt grad den Port nicht)
was für Objekte stahen denn in Deiner DataList ?
Einen RuntimeType erhälst Du z.B. wenn du GetType() auf einem Objekt rufst, welches selber ein Type ist.
Wenn also bei "obj.GetType" obj selbst ein Type ist, ist der Effekt klar....
Hallo,
du kannst auch ein Javascript an den Client schicken, bzw. eines vom Server anfordern und ausführen, ohne die Seite neu zu laden.
Eine gute Möglichkeit bietet eine Technologie namens AJAX (asynchrones Javascript und XML).
Bei Google findest Du bereits fertige .NET-Bibliotheken für Ajax, die kannst Du einfach einbinden und benutzen.
Ich denke daß das Problem irgendwo im Event-Handling liegt. Aber wenn Du kein Invalidate() rufen mußt, wird auch kein Paint-Event verschickt. Die OnPaoint-Methode wird in meinem Beispiel überhaupt nur ausgeführt, wenn Resized wird (obwohl ich mir das da auch noch sparen könnte) oder wenn das Fenster irgendwie von extern den Befehl zum neuzeichnen erhält. Daher gibts dann auch keine Probleme.
Es ist einige Zeit herddaß ich das geschrieben habe, aber ich weiß auch daß ich einen Grund dafür hatte, dasPaint-Event zu unterlaufen, obwohl es mir eher darum ging, flimmern bei schnell aufeinanderfolgenden Updates (Sternkarte die man ziehen kann) zu verhindern.
seltsam so sollte es eigentlich klappen... Ich habe allerdings ein bisschen mit deinem code experimentiert und ganz seltsame effekte erzeugt... Vielleicht solltest Du es mal so probieren, wie ich es zuerst beschrieben habe, das klappt bei mir einwandfrei.
Du musst lediglich die for-Schleife an die entsprechend kommentierte Stelle setzen, und wo Du bisher Invalidate() gerufen hast, Draw() aufrufen.
Auch sehr schön.
Bei mir implementiert das Fenster übrigens auch ein Drawerinterface :-) und das wird dann an ein Objekt übergeben, in dem wieder mehrere Unterobjekte in gewünschter Reihenfolge zeichnen mit den Interface-Methoden zeichnen, nur bei mir sind diese Interfacemethoden dann Member der Form und ich kann direkt auf g zugreifen. Ein etwas anderer Ansatz für genau das gleiche Problem :-)
Funktioniert der Code jetzt übrigens??
Meiner Ansicht nach geht es bei der OOP haupsächlich um die Abstraktion.
Basisobjekte sollten immer einen möglichst abstrakten Charakter haben, um Sie vielseitig nutzen zu können. Wenn Du die Realität in Objekte packen mußt, vergleiche die Gemeinsamkeiten der Objekte und richte Deine Klassen und Interfaces danach.
Oje, klingt das jetzt philosophisch... war gar nicht so gemeint.
wer ist myCanvas und was passiert in sattelites.Value.Paint ?
wichtig ist: die OnPaint-Methode benutzt zum Zeichnen das Graphics-Objekt, welches in den EventArgs übergeben wird, du musst aber auf das Graphics-Objekt g zeichnen.
Deshalb muss g an denen Stellen verfügbar sein, an denen tatsächlich gezeichnet wird, sprich z.B. Aufrufe von DrawLine(...) oder DrawString(...) gemacht werden.
Diese Aufrufe müssen auf dem Objekt g ausgeführt werden, nicht auf den an OnPaint übergebenen Objekt!
Mit Deiner Version unterläufst Du das Konzept, weil sattelites.Value.Paint mit Sicherheit mit den falschen Graphics zeichnet.
Hallo,
Das ist unproblematisch habe beides bei mir drauf.
.NET und MONO benutzen komplett verschiedene dlls und Verzeichnisse und haben auch einen getrennten GAC.
Da beißt sich nix.
Ich empfehle SharpDevelop, der kann für beide Runtimes kompilieren.
Hallo,
ich habe für einen ähnlichen Fall folgendes Offscreen-Verfahren entwickelt:
Du kannst die gesamte Zeichenfunktion in eine Methode auslagern und diese dann bei Ereignissen, bei denen tatsächlich neu gezeichnet wird, aufrufen. Das Ergebnis schreibst du in ein Image im RAM. Im OnPaint() zeichnest du dann dieses OffscreenImage. Das heißt, da nach Überdeckungen usw. immer nur OnPaint() aufgerufen wird, daß in diesen Fällen nur das Image gezeichnet wird.
class MyWindow: System.Windows.Forms.Form
{
Graphics g;
Bitmap offscreen;
/* Konstruktion usw. */
void Draw()
{
if (offscreen == null) //Bitmap for doublebuffering
{
offscreen = new Bitmap(ClientRectangle.Width, ClientRectangle.Height);
g = Graphics.FromImage(offscreen);
}
g.Clear(this.BackColor);
/* Code zum zeichnen hier, dabei das Graphics-Objekt g benutzen. */
CreateGraphics().DrawImage(offscreen,ClientRectangle);
/*denkbar wäre statt der letzten Zeile auch
this.InvokePaint(this, new PaintEventArgs(CreateGraphics(),ClientRectangle));
aber die erste Lösung ist schneller :-)*/
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawImage(offscreen, e.ClipRectangle ,e.ClipRectangle, GraphicsUnit.Pixel);
base.OnPaint(e);
}
protected override void OnResize(EventArgs e)
{
//Hier den offscreen nullen, da die Bitmap eine andere Größe bekommt
offscreen = null;
Draw();
base.OnResize(e);
}
}
Schau dir mal an wie die Serverinstanz heißt, die vom Remotedebugger erstellt wird. Wenn Du den RD von Hand startest (nicht als Dienst) bekommst Du das auf jeden Fall angezeigt. Der Servername, der dann bei "An Prozess anhängen" eingegeben wird, muss genau diesem Instanznamen entsprechen. Das ist NICHT NUR der Rechnername, obwohl dieser im Instanznamen natürlich enthalten ist.
Ja stimmt das kann ich auch reproduzieren.
Das liegt wohl daran, dass der SQL-Parser die Abfrage schon überprüft bevor er sie überhaupt stellt. Vielleicht hilft es Dir, den SpaltenNamen in eine Variable zu stecken und diese dann im inneren SELECT zu verwenden -> weiß ich aber nicht genau.
Nein- ich benutze auch die Express-Edition und bei mir hat die Abfrage genau so funktioniert, wie von Noodles beschrieben (mit einer meiner Tabellen). Muss noch irgendwo ein typo oder sowas sein...
Die Abfrage funktioniert so. Vielleicht bist Du nicht auf der richtigen Datenbank wenn Du die Abfrage stellst?? Im Management Studio siehst du die verbudene Datenbank für die aktuelle Query links neben dem "Execute"-Knopf in der Symbolleiste.
@harrylask: Main Fehler mit dem IDisposable, danke, habs mir nochmal angeschaut.
@herbivore:
"Die Frage ist also, ob ein Objekt noch vom Programm aus über eine Referenz zu erreichen ist" -->
So in etwa hatte ich das gemeint, mit "nirgendwo mehr referenziert", hatte mich nur etwas unklar ausgedrückt, sorry.