Vielen Dank! Hat super geholfen.
Hallo zusammen,
ich hab da ein kleines Problem mit INotifyPropertyChanged.
Also es geht um eine verteilte Anwendung mit .NET-Remoting als Middleware.
Nun habe ich eine Klasse, deren Objekte ich per Remoting über die Leitung schicke. Solange diese Klasse INotifyPropertyChanged nicht implementiert funktioniert alles wunderbar.
Sobald ich das Interface aber implementiere, wird mir beim Versuch das Objekt mittels Remoting über die Leitung zu schicken folgender Fehler entgegengeworfen:
Fehlermeldung:
Der Typ "System.ComponentModel.ReflectPropertyDescriptor" in Assembly "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" ist nicht als serialisierbar gekennzeichnet.
Allerdings habe ich bis zu diesem Moment keine Handler dem PropertyChanged-Event des Objekts hinzugefügt. Also wüsste ich nicht, warum da irgendwas dranhängen sollte.
Weiß jemand Rat?
MfG
wax
hmm ich kann das prog kompilieren und starten...
Danke.
Hi herbivore,
das hatte ich befürchtet!
MfG
wax
Hallo zusammen,
auf dem beigefügten Bild sieht man, dass es 2 Arten von Reservierungen gibt und 2 Arten von Klassen, die jeweils eine Reservierungsliste als Member besitzen.
Nun würde ich es gerne so haben, dass beim Zugriff auf die Liste sich je nach Vererbungsebene ein anderer Typ als Listenelement präsentiert.
Also wenn ich auf eine Instanz von "BasisKlasse" zugreife, dann soll die Liste als List<Reservierung> "sichtbar" sein. Wenn ich aber auf eine Instanz von "SpezielleKlasse" zugreife, dann sollen die Listenelemente vom Typ "SpezielleReservierung" sein.
Ist das per Vererbung überhaupt möglich? Ich verwende .NET 3.5.
MfG
wax
Ist es nicht so, dass du (je nach verwendetem Bereich) genau weisst welches Interface in Frage kommt? Wenn ja, dann kannst du ja versuchen das Objekt in diesen "Interface-Typ" zu casten und anschließend darauf "IsValid" aufrufen.
Wobei ein DownCast natürlich nicht so schön ist, wie wenn es sich durch ein anderes Objektmodel rein durch Polymorphismus lösen lassen würde.
MfG
wax
Hi,
also vorweg... wenn eine Klasse ein Interface implementiert, dann implementiert eine Instanz dieser Klasse das Interface zu genüge. 😃
Kannst du deine Abfrage auf Gültigkeit nicht allgemeiner halten? Z.B. eine Methode "IsValid() --> {true, false} einführen? Die könntest du dann ja in einem "Basisinterface" verankern.
MfG
wax
Hi,
ich lade dynamische Daten auch erst "nach dem Konstruktor". Da ich im Konstruktor nicht testen kann, ob sich das Control gerade im Design-Mode befindet oder nicht.
Mfg
wax
Hi,
den Code hab ich damals irgendwo im Netz gefunden...
public static Bitmap CaptureWindow(ref Form inForm)
{
Image result = null;
try {
Graphics g1 = inForm.CreateGraphics();
result = new Bitmap(inForm.ClientRectangle.Width, inForm.ClientRectangle.Height, g1);
Graphics g2 = Graphics.FromImage(result);
dynamic dc1 = g1.GetHdc();
dynamic dc2 = g2.GetHdc();
BitBlt(dc2, 0, 0, inForm.ClientRectangle.Width, inForm.ClientRectangle.Height, dc1, 0, 0, 13369376);
// SCRCOPY = 0x00CC0020
g1.ReleaseHdc(dc1);
g2.ReleaseHdc(dc2);
} catch (Exception ex) {
result = null;
}
return result;
}
MfG
wax
Hi, also meine letzte Vorgehensweise war so, dass ich ein Screenshot der Clientarea geschossen hab und diesen innerhalb einer PictureBox (Dock.Fill) angezeigt hab. Dann habe ich im Paint-Eventhandler der PictureBox noch ein halbtransparentes Rechteck über die komplette PictureBox gezeichnet.
Geht bestimmt eleganter, doch es funktioniert hier in der Software und sieht gut aus. 😃
Mfg
wax
Ich gehe mal davon aus das deine DataSource ein DataTable-Objekt ist. Wenn das so ist, dann kannst du ja einfach den gewünschten Datensatz per DataTable.Select() "auswählen" und dir aus der gefundenen DataRow den Wert ziehen.
Wenn du nur einen Wert aus der DB holen möchtest, dann erstelle dir halt das passende SQL und frag die Daten per IDataReader ab.
MfG
wax
Hallo,
wie rufst du deine Daten denn ab?
Spalte Zwei Feld 6 überfordert mich gerade. 😃 Meinst du vielleicht Zeile 2, spalte 6? Wobei du dann natürlich über den PK deiner Tabelle gehen musst, um einen bestimmten Datensatz auszuwählen.
MfG
wax
what? 😄
Hallo zusammen,
bevor man über soetwas nachdenkt, sollte man immer erst am Algorithmus "schrauben" finde ich. Wenn die Komplexität "zu hoch" ist, dann bringt einem auch mehr Rechenleistung nichts, da diese nichts am eigentlichen Laufzeit-Wachstumsverhalten ändert.
Mfg
wax
Leite einfach von System.Windows.Forms.Button ab und überschreibe innerhalb dieser Ableitung die Text-Eigenschaft.
Schon hast du es...
Mfg
wax
Image.FromFile("blablub.gif");
Hi, du hast die Daten ja schon abgeholt in dem Moment. Da ist nichts mehr zu lesen ^^
MfG
wax
Hallo,
ich musste gerade zum ersten mal feststellen, dass wenn ich ein UserControl mit einer Eigenschaft A habe, ich dann kein Event im UserControl definieren darf das AChanged heisst.
Dann funktioniert kein DataBinding an Eigenschaft A mehr! Sobal ich das Event zum Beispiel auf myAChanged umbenenne, funktioniert das DataBinding wieder.
Bilde ich mir das gerade nur ein oder darf man dann wirklich den Namen des Events nicht so wählen wie ich es gemacht habe?
MfG
wax
Hi MarC611,
ich weiß ja nicht wie deine Datenbankabfrage aussieht, aber vielleicht hilft dir ja Auffüllen eines DataSet durch einen DataAdapter
Damit hättest du keine feste Verdrahtung mit deiner Klasse1 mehr.
MfG
wax
Hi karin,
such mal nach Regular Expressions. Damit bekommst du sowas hin.
MfG
wax
Und irgendwann gibt es eine COMException und es wird wieder versucht eine Verbindung aufzubauen... Es gibt dann wieder eine COMException und es wird wieder versucht eine Verbindung aufzubauen.... Es gibt dann wieder.......
So könnte ich es mir vorstellen...
MfG
wax
Moin,
es läuft schon weiter, doch irgendwas kann da ja nicht stimmen...
MfG
wax
Hallo zusammen,
ich habe zur Zeit ein Problem, bei dem ich nicht mehr weiter weiß. Also ich arbeite mit der XtraReports-Suite von DevExpress, aber das sollte nichts ausmachen. 🙂
Es geht darum, das ich folgende Exception bekomme, doch mein Kollege nicht. Obwohl wir denselben Code laufen lassen. Also muss ich mir irgendwie das System versaut haben. Naja, hier mal die Exception:
Fehlermeldung:
BindingFailure was detected
Message: Die Assembly mit dem Anzeigenamen "System" konnte im "Load"-Bindungskontext der AppDomain mit ID 1 nicht geladen werden. Fehlerursache: System.IO.FileNotFoundException: Die Datei oder Assembly "System" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
Dateiname: "System"=== Zustandsinformationen vor Bindung ===
LOG: Benutzer = xxx\yyy
LOG: DisplayName = System
(Partial)
LOG: Appbase = file:///C:/V4.NETDEV/Client/bin/x86/Debug/
LOG: Ursprünglicher PrivatePath = NULL
Aufruf von Assembly : DevExpress.XtraReports.v10.2.Extensions, Version=10.2.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a.
===
LOG: Diese Bindung startet im default-Load-Kontext.
LOG: Die Anwendungskonfigurationsdatei wird verwendet: C:\V4.NETDEV\Client\bin\x86\Debug\Client.vshost.exe.Config
LOG: Die Computerkonfigurationsdatei von C:\Windows\Microsoft.NET\Framework\v2.0.50727\config\machine.config wird verwendet.
LOG: Die Richtlinie wird derzeit nicht auf den Verweis angewendet (private, benutzerdefinierte, teilweise oder pfadbasierte Assemblybindung)
LOG: Download von neuem URL file:///C:/V4.NETDEV/Client/bin/x86/Debug/System.DLL.
LOG: Download von neuem URL file:///C:/V4.NETDEV/Client/bin/x86/Debug/System/System.DLL.
LOG: Download von neuem URL file:///C:/V4.NETDEV/Client/bin/x86/Debug/System.EXE.
LOG: Download von neuem URL file:///C:/V4.NETDEV/Client/bin/x86/Debug/System/System.EXE.
Ansich ist die Fehlermeldung natürlich klar. Er findet halt die Datei(en) nicht. Doch weshalb sucht er eine SYSTEM.DLL in meinem Anwendungsordner!?! 8o
MfG
wax
Wenn Du von Addition sprichst, gehe ich davon aus, dass Du einen vorhandenen Datensatz aktualisieren möchtest und innerhalb der betroffenen Tabelle gibt es eine Spalte, deren Wert sich nun folgendermaßen ergibt: "neuer Wert" = "alter Wert" + "Konstante", richtig?
MfG
wax
Wenn er senden und sich eh wieder schließen soll, warum dann nicht einfach per SMTP?
Hi,
der Client wird nur geöffnet.
System.Diagnostics.Process.Start("mailto:bla@blub.de");
MfG
wax
Hi eddi86,
wie wäre es mit "mailto:" ?
Ich glaube damit wird der Standardclient aufgerufen.
Mfg
wax
Hi Ivy,
zuerst solltest Du den Datenbankzugriff vom GUI (z.B. die ComboBox) trennen.
Anschließend mach dir doch eine Methode, die per Parameter alle wichtigen Informationen übergeben bekommt, um sich dann das passende SQL-Statement selbst zurecht schustern zu können oder übergib einfach den SQL-String. Mir egal wie. 😉
Diese Methode gibt ein List<String> - Objekt zurück. Mittels dieser Liste kannst Du so deine ComboBox befüllen.
MfG
wax
Also was ich nach dem Überfliegen der Texte sagen würde: deine Matrix2D - Klasse sollte wohl IDataObject implementieren.
MfG
wax
Vielleicht hilft dir Ungültiger tymed(Ausnahme von HRESULT:0x80040069)... bei Lesen eines DataObject aus Clipboard ja weiter
MfG
wax
Hast Du die Exception denn schonmal abgefangen?
Mfg
wax
Hi Ivy,
durch die Ableitung bekommen deine Objekte der erbenden Klasse doch nur denselben "Bauplan" wie die der Hauptklasse.
In deinem Modell kann jede Instanz ihre eigene Connection haben.
MfG
wax
Hi,
funktioniert
string[] gesplitted = text.Split('\n');
nicht?
MfG
wax
Hi,
also eine Tabelle mit 1ner Spalte ist ziemlich langweilig. 😉
Zeig die Daten doch besser in einer ListBox an, oder?
MfG
wax
Das mit der Tab-Taste und 2 Controls weiter springen kann ja ganz einfach am TabIndex der Controls liegen. Das mit der u-Taste kann ich mir noch nicht erklären. 😃
MfG
wax
Nachtrag: Für eine Observer-Variante bräuchtest du einen Prozess der den Server spielt.
MfG
wax
Hi,
nur mal Interesse halber: wofür? 😉
Mfg
wax
Stichwort: Observer - Entwurfsmuster
MfG
wax
Das ist in Verbindung mit DevExpress nicht ganz so einfach. "Die" erben nicht mit jedem GUI-Element von Control. Aber versuchen kann er es ja mal.
MfG
wax
Hi,
ein simples List.Remove(deinObjekt) sollte genügen, oder?
MfG
wax
Hi Achim,
vielleicht hilft dir ja die Form.ActiveForm - Eigenschaft!?
MfG
wax
Administratorrechte vielleicht nur unter der VM vorhanden?
MfG
wax
Hi,
ich würde an deiner Stelle einfach von dem Control erben. Dann habt ihr in Zukunft immer eine gute Möglichkeit eigene Standards zu definieren.
MfG
wax
Hi Wolf86,
wie Du suchst schon eine ganze Weile und hast nichts zum Thema der Speicherung von Daten gefunden?!
Also du hast in Sachen Persistenzierung (schreibt man das so 😃) alle Möglichkeiten, aber ich glaube du schaust dir einfach mal an wie man einen String in eine Datei schreibt und ihn wieder liest. Das sollte es dann auch sein...
Vielleicht reicht dir auch das hier: Konfigurationsmodell 2.0
MfG
wax
Hi,
dann lade die einzelnen Controls erst wenn eine TabSeite aktiviert wird. Vielleicht bringt das was?
MfG
wax