Laden...

Forenbeiträge von mosspower Ingesamt 456 Beiträge

21.09.2008 - 03:51 Uhr

.NET Remoting, da werden Sie geholfen 😉

19.09.2008 - 22:49 Uhr

Hallo "Kollegen",

ich stehe hier gewaltig auf dem Schlauch, und im Web habe ich auch schon ewig viel Zeit "verbraten". Wie komme ich denn bitte beim SortEreignis auf die zu sortierende Spalte? Wo ist da der Index? Was ich möchte ist "lediglich", alle Spalten vor- und rückwärts zu sortieren (das geht ja mit SortExpression und SortDirection) ... jedoch möchte ich bei allen Spalten die Sortiermöglichkeit anbieten, jedoch finde ich keinen Index im EventArg, welches bei mir so aussieht ...

protected void dgv_Sorting(object sender, GridViewSortEventArgs e) { ...

Wie kriege ich jetzt raus, welche Spalte es betrifft? Die Spalte brauche ich, weil ich ja die SortDirection setzen muss (dies geschieht nicht automatisch, die ist immer auf dem Default- bzw. Startwert).

Danke schon mal für etwaige Hilfe

19.09.2008 - 21:17 Uhr

OK, für alle, die es interessiert, es gibt doch eine Lösung, die sieht dann so aus:

aus ....

SELECT o.liefernummer, 'sendungsnummer' =
  CASE
    WHEN d.sendungsnummer IS NOT NULL THEN d.sendungsnummer
    ELSE convert(varchar, u.sendungsnummer)
  END FROM [order] o

... wird

SELECT o.liefernummer,
  CASE d.sendungsnummer
    WHEN IS NOT NULL THEN d.sendungsnummer
    ELSE convert(varchar, u.sendungsnummer)
  END AS myAliasName
FROM [order] o

13.09.2008 - 22:00 Uhr

Gibt es auch eine Open-Source-Lösung? Ich brauche einfach nur ein paar Dokumente mit wenigen dynamischen Ersetzungen und ein kleines Image - mehr nicht.

13.09.2008 - 15:35 Uhr

Hallo "Kollegen",

ich suche einen Designer für Berichts- oder Reportvorlagen. Also ähnlich wie die Berichte in Access. Gibt es soetwas auch für C#? Ich möchte z.B. für eine Rechnung eine Vorlage erstellen (wenn möchlich mit einem Designer, da ich es dann anderen übergeben möchte und nicht immer im Quellcode die Positionierung anpassen) und die fehlenden Angaben werden dann hinzugefügt und daraus dann das fertige Dokument gedruckt, z.B. in PDF. Nun ist mir klar, dass es viele Lösungen gibt, programmiertechnisch, aber gibt es auch billige (oder Open Source) Designer um solche Templates erstellen zu können. Ich habe mal kurz gehört, dass man dazu Cristal Reports benutzen kann, kenne mich da aber nicht aus, bzw. weiss das nicht. Wie würdet ihr das Problem lösen, bzw. habt es in der Verganhenheit so gelöst? Danke schon mal für etwaige Antworten im Voraus.

08.09.2008 - 08:41 Uhr

@Khalid,

vielen Dank! - dann mache ich eine View - dachte, dass man hier mit einem Alias draufgehen kann.

Gruß

07.09.2008 - 21:25 Uhr

SQL-Server, Version 8-9

Wie kann ich für folgendes Statement in der Where-Klausel auf sendungsnummer zugreifen? Einen Alias bekomme ich nicht hin, da ich immer Fehlermeldungen bekomme (z.B. as bla)

SELECT o.liefernummer, 'sendungsnummer' = 
  CASE 
    WHEN d.sendungsnummer IS NOT NULL THEN d.sendungsnummer 
    ELSE convert(varchar, u.sendungsnummer)
  END FROM [order] o
LEFT OUTER JOIN ups u ON o.liefernummer = u.liefernummer
LEFT OUTER JOIN dtc d ON o.liefernummer = d.liefernummer
WHERE sendungsnummer ???

Ich möchte einfach auf das dynamische Feld in der Where-Klausel zugreifen. Das muss doch irgendwie gehen.
Danke schon mal für eure Hilfe.

03.09.2008 - 11:23 Uhr

Meinstest Du "definitiv NICHT" ?

Der SQL Server (und andere) bettet jedes Update und Insert Kommando in eine Transaktion.

Dead Locks (nicht mit der Frisur zu verwechseln, bei der man sich nie die Haare waschen muss) enstehen, wenn Prozess A auf die Beendigung von B wartet und B auf die Beendigung von A.

Einige DBMS erkennen Deadlocks und lösen diese nach einer gewissen Zeit auf, indem eine Transaktion rückgängig gemacht wird (das Opfer). Dies muss eigentlich in der Transaktion aufgefangen werden und die Transaktion muss erneut durchgeführt werden.

Man kann Dead Locks vermeiden, indem man Resourcen immer in der gleichen Reihenfolge sperrt.

Grüße Bernd

Sorry, ich meinte natürlich definitiv nicht 😁 ... ja, es ist halt in dem Uraltprogramm (das übrigens jetzt auch nicht ein "Starcoder" gemacht hat) keinerlei Exceptionhandling + Modularisierung + Transaktionen usw. drinnen. Ich hatte halt mal nachgefragt, da ich jetzt (noch) nicht so fit in VBA bin und ich dem Coder seine Logik noch nicht "durchstiegen" habe.

03.09.2008 - 09:46 Uhr

Ich habe jetzt mal nachgefragt, leider sind fast keine Leute mehr in meiner jetzigen Firma, die überhaupt wissen, was läuft. Ich habe jetzt in Erfahrung gebracht, dass es genauso sein kann, wie tscherno beschrieben, dass ein anderer Prozess ziemlich lang braucht um irgendswelche Positionen abzuarbeiten und dann fällt dieser "Pseudodeadlock". Ich muss da mal tiefer reinschauen (leider VBA 😦) ... und natürlich auch kein Exceptionhandling drinnen. Also, danke erst mal für die Antworten - ich werde in Zukunft, wenn ich es gelöst habe, dann nochmal einen Post hier reinstellen. Also, danke erst mal.

03.09.2008 - 08:59 Uhr

Moin,

eine VBA-Anwendung (in Access) greift auf einen SQL-Server (Version 8 ) zu. Die Fehlermeldungen lauten immer (leider auf deutsch):

_**Laufzeitfehler '-2147467259 (80004005)'

Die Transaktion (Prozess-ID 69) befand sich auf lock Ressourcen wegen eines anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer ausgewählt. Führen Sie die Transaktion erneut aus.**_

Es wird definitiv (auch nicht mit anderen Programmen) mit Transaktionen und / oder Threads gearbeitet. Mir ist bisher nicht bekannt, dass eine Anwendung einen ähnlichen Fehler verursacht. An was kann das denn liegen, hat jemand eine Idee? Wie kann denn so eine, hm, ich sage jetzt mal "Pseudodeadlocksituation" entsteht?

02.09.2008 - 22:44 Uhr

Hallo "Kollegen",

ich wollte einmal Fragen, ob es zu sog. Deadlocks kommen kann, wenn mehrere Programme auf die gleiche Datenbank (teilweise auf die gleichen Daten) zugreifen? Ich dachte immer, dass das DBMS Concurrent-Zugriffe nach dem FiFo-Prinzip regelt und die anderen Anfragen in eine Queue stellen. Täusche ich mich hier? Löscht Connection A einen Datensatz und zur (scheinbar) gleichen Zeit will Connection B ein Update durchführen, dann kommt eben die Meldung zurück, dass Datensatz nicht mehr vorhanden ist. Ich habe gerade in unserer Firma ein älteres Programm übernommen, welches immer wieder sog. Deadlocks-Exception wirft (VBA-Anwendung). Wie kann das denn zustande kommen? Das ist mir ein Rätsel (vielleicht wird auch der Name Deadlock in der Fehlermeldung soz. mißbraucht, denn unter einem klassischem Deadlock stelle ich mir etwas anderes vor). Hat jemand eine Idee was das sein könnte. Kommt an verschiedenen Stellen häufiger vor im Programm - ich habe keinen Blassen, was das sein könnte.

26.08.2008 - 18:09 Uhr

Naja, das Problem ist, dass ich gegenwärtig auf einem Projekt bin, wo die Coder schnell was zusammenflicken mussten und der technische Background gefehlt hat. Was haben die dann gemacht? Genau, die haben einfach in Access verschiedene VBA-Anwendungen geschrieben, die dann widerum auf SQL-Server-Datenbanken zugreifen. Das sind vier Anwendungen + 1 Webanwendung + 1 VB 6.0-Anwendung. Problem ist jetzt, dass es am Tag ca. 3 mal zu Deadlocks kommt und Datenbankänderungen an allen Applikationen nachgezogen werden müssen. Was ich jetzt vorhabe ist, dass ich erst mal einen Persistenzschichtservice mit .NET-Remoting 2.0 (TCP) bauen will ohne alle Programme umzuschreiben, bzw. gleich umzuschreiben. Deshalb müsste ich jetzt eine Möglichkeit (für den Übergang) finden um mit VBA auf .NET-Services zugreifen zu können.

Das ist meine Idee, um das anzugehen. Habt ihr andere Ideen?

26.08.2008 - 15:40 Uhr

Hallo "Kollegen",

ist es möglich, und wenn ja, wie, mit VBA auf einen .NET-Remoting Service zuzugreifen? Ich kann dazu leider im Web nichts finden.

Vielen Dank schon einmal für etwaige Antworten im Voraus

21.08.2008 - 10:54 Uhr

@Smou,

jetzt geht es. Was habe ich gemacht? Einfach ein neues Projekt erstellt 8o 😁 ... manchmal echt komisch. Danke für Deine Bemühungen.

21.08.2008 - 10:33 Uhr

Ich habe aber ein Icon zugewiesen, das wird aber nicht angezeigt.
Wenn ich das (hardgecoded) mit der Instanz, wie vorhin schon geposted mache, z.B.:

this.notifyIcon.Icon = new Icon("test.ico");

dann funzzt das auch nicht ... test.ico gibt es aber

21.08.2008 - 10:17 Uhr

Ne, das mit der Instanz funnzt auch net, wie schon beim letzten Post mitgeteilt. 🙁

21.08.2008 - 10:05 Uhr

poste mal wie du versucht das icon anzeigen zu lassen

Wie anzeigen lassen? Das muss ich doch gar nicht, wenn ich das im Designer mache. Also, in der Designer-Klasse steht folgendes:

 this.notifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon.Icon")));
// so funzzt auch net
// this.notifyIcon.Icon = new Icon("test.ico");
this.notifyIcon.Text = "Bla Bla Text";
this.notifyIcon.Visible = true;

Was mache ich denn falsch?

21.08.2008 - 09:39 Uhr

Hallo "Kollegen",

habe ich beim NotifyIcon etwas falsch verstanden, denn es wird bei mir nicht angezeigt. Ich habe es so verstanden. Ein NotifyIcon (wenn Visible-Property auf true gesetzt ist), wird im System Tray angezeigt, wenn die Anwendung startet - ist dies richtig? Bei mir sehe ich aber kein Icon im System Tray. Was mache ich falsch? Visible ist auf true und Icon wurde auch ausgewählt. Wenn ich die (Windows) Applikation starte, dann sehe ich nur die Form (wie sonst auch), weit und breit nix von einem Icon zu sehen.

Wer kann mir helfen. Vielleicht stehe ich jetzt auch nur auf dem Schlauch - sollte mal wieder schlafen 😁 ... Danke schon mal für etwaige Antworten im Voraus

27.07.2008 - 16:28 Uhr

Ja, das hatte ich vorher auch schon ausprobiert. Nur blöd ist, dass solange die Maustaste geklickt ist, der Eintrag selektiert ist X( - trotzdem immer noch besser als durchgehend selektiert.

27.07.2008 - 04:12 Uhr

Hallo "Kollegen",

ist es möglich, bei einer CheckedListBox (Eigenschaft CheckOnClick gesetzt) die Selection zu unterbinden? Hintergrund ist, dass dies total häßlich und ungewöhnlich aussieht, wenn man auf einen Eintrag klickt und der dann nicht nur gechecked / unchecked wird, sondern auch noch blau selektiert. Kann man dieses selektieren unterbinden? Ich möchte einfach nur, dass der Eintrag gechecked/unchecked wird nach Mausklick und nix weiter (blau selektiert). Danke schon mal für etwaige Antworten im voraus.

24.07.2008 - 10:49 Uhr

Weise dem Control einen eigenen ControlDesigner zu und überschreibe die Eigenschaft SelectionRules des ControlDesigners.

Funzzt mit ...

return SelectionRules.Visible | SelectionRules.Moveable;

Vielen Dank!

23.07.2008 - 22:16 Uhr

Hallo "Kollegen",

ich habe ein (scheinbar?) total triviales Anliegen. Ich möchte, dass ein Benuter eines selbsterstellten Controls die Größe nicht verändern kann, wie z.B. beim LabelControl. Ich dachte, dass ich da Locked auf True setze, das funzzt aber nicht und eine andere Property kann ich leider nicht ausmachen - gefunden habe ich jetzt auch nix hier und bei Google - habe also schon ein wenig Zeit damit "vertan". Kann mir einer helfen?

21.07.2008 - 13:54 Uhr

Ich sage 1000 mal Danke! .. you just made my day ... it works!

21.07.2008 - 02:37 Uhr

Vielen Dank, habe ich nicht gewusst, dass es diese Möglichkeit gibt mit SelectionColor bei RichTextBoxen.

21.07.2008 - 02:08 Uhr

Hallo "Kollegen",

aktuell ein großes Problem, welches mich nun schon wieder eingeholt hat. Hintergrund ist, dass wenn in einem Panel Scrollbars vorhanden sind und ich in diesem Panel auf ein Steuerelement klicke, welches nicht von Anfang an (Position x=0, y=0) sichtbar ist, also der Start des Steuerelements nicht sichtbar ist, dann scrollt der Balken zur Position 0,0 des Steuerelements - das kann ja sehr oft hilfreich sein, doch meine Applikation wird dadurch komplett zerschossen, denn ich habe in einem Webbrowser-Steuerelement ein Menu. Ist dies nun soweit aufgeklappt, dass man scrollen muss, dann kann man nicht mehr auf einen Menupunkt klicken, wenn die Scrollposition nicht 0 ist, denn der Balken springt dann immer wieder auf den Beginn des Steuerelements - wie kann man das abstellen, bzw. wie nennt man dieses (automatische) Verhalten. Ich habe keine Ahnung nach was ich im Web suchen soll. Wäre jetzt wirklich schade, wegen der ganzen Arbeit, wenn ich das nicht verwenden kann nur weigen einen "Formfehler". Danke schon mal für eure Antworten. Ich hoffen, dass ich mein Problem einigermaßen "rübergebracht" habe, wenn nicht, bitte nachfragen.

20.07.2008 - 23:44 Uhr

Hallo "Kollegen",

was ich realisieren möchte wäre eine Art Consolenfenster, z.B. schwarzer Hintergund mit Meldungstexten, diese aber in verschiedenen Farben, wie z.B. auf der Linuxconsole. Gibt es hierfür ein Steuerelement? Ich kann zwar Richtextbox verwenden, nur bin ich hier auf eine Farbe beschränkt. Wie kann ich dies lösen? OK, wenn alle Stricke reissen, dann könnte ich noch einen aufwändigen Umweg über Webbrowser-Control gehen. Geht das nicht einfacher?

02.07.2008 - 09:11 Uhr

Vielen Dank für die Hinweise. Ich werde auf jeden Fall "normales POX" verwenden. Ob jetzt über plain HTTP oder über SOAP (Rückgabewert XML als String) werde ich mal sehen - denke auber, dass mit SOAP mehr etwas anfangen können und die Serialisierer sollten auf allen Plattformen mit Rückgabewert String keine Probleme haben. Also, danke nochmals für eure Hinweise.

29.06.2008 - 00:55 Uhr

@kleines_eichhoernchen,

vielen Dank erst mal für Deine Ausführungen. Das meiste ist mir bekannt. Mir ging es darum, wie dieses Problem hauptsächlich gelöst wird - mit Objekten (und Collections) oder mit XML. Beides hat ja Vor- und Nachteile. Ich habe mich noch nicht für die eine oder andere Lösung entschieden. Anscheinend wird das unterschiedlich gehandhabt.

26.06.2008 - 00:51 Uhr

Hallo "Kollegen",

kann mir mal jemand ein paar Tips aus der Praxis geben. Ich will verschiedene Web Services programmieren, die komplexe Daten(typen) zurückgeben. Komplex in Form von Objekten, die dann Collection von weiteren Objekten und das gleich nochmals für Objekten in der Liste, also tief Verschachtelt. Jetzt gibt es ja zwei Möglichkeiten. Ich gebe das Basisobjekt zurück mit den Eigenschaften und der Liste, welche widerum eine Liste von Objekten besitzt. Will jetzt jemand dieses Service benutzen, dann muss er sich halt selbständig um die Generierung der nötigen Objekte kümmern, oder aber Generatoren machen das für den Benutzer - das kann u. U. von einigen Generatoren nicht verstanden werden oder aber aus den Listen / Collections werden Arrays ect. Wenn ich das in .NET programmiere und ich das in .NET anwende (Client), dann habe ich ja keinerlei Probleme mit der Generation - ich könnte ja auch die Objekte gleich mit zur Verfügung stellen. Wenn jetzt aber andere Nicht-.NET-Umgebungen (wie z.B. Java oder PHP) auf das Service zugreifen wollen, dann haben die sich selber um die Objekte, bzw. Anordnung der Responses zu kümmern. Nun dachte ich, um diesen faden Beigeschmack einigermaßen neutralisieren zu können, dass ich keine Objekte zurückliefere, sondern gleich XML, welches dem Objektaufbau- und -baum entspricht. Als .NET-Anwender (auch Java) kann ich das ja dann gleich automatisch mit Attributes (bzw. Annotations in Java) auf die dementsprechenden Objekte mappen lassen. Auch würden sich imo Clients anderer Umgebungen leichter tun, wenn die "einfach" nur die Schema-Datei studieren und sich dann selbst um alles weitere kümmern. Nun die Frage. Welche Lösung ist denn besser, was benutzt man bei diesem "Problemfall" in der Praxis bevorzugt. Wie groß ist der Performanceverlust, wenn ich über den Umweg XML die Responses als Zwischenschritt auf die Objekte mappe?

Danke schon mal im voraus für Antworten, Anregungen und Vorschläge.

11.06.2008 - 22:34 Uhr

@herbivore,

vielen Dank, wie immer top und schnelle Antwort ... funzzt alles wunderbar ... wording auch angepasst 😉

11.06.2008 - 22:07 Uhr

@herbivore,

hm, verstehe ich jetzt nicht ganz. Ich habe in der Basisklasse folgende Methode ...

 /// <summary>
    /// Invokes the ExchangeMessage event, if the event is set
    /// </summary>
    /// <param name="type">The message type</param>
    /// <param name="message">The message</param>
    protected void HandleExchangeMessage(Wisdom3000Constants.ExchangeMessageType type, String message) {
      if(this.ExchangeMessage_Event != null) {
        this.ExchangeMessage_Event.Invoke(type, message); 
      }
    }

Wenn ich das aus der (Unter) Klasse aufrufe, dann funzzt das wunderbar, nur wenn es in einem Thread ist, bekomme ich diese cross-thread-Exception. Wie würde ich das jetzt umgehen können, ohne das ganze Messaging umzustellen?

Control.Invoke kann ich nicht aufrufen, da ich in der UserControlKlasse ja nicht auf das Control in der Hauptform komme.

11.06.2008 - 21:53 Uhr

Hallo "Kollegen",

wie ich in einer Windows-Application innerhalb eines Threads mit Controls kommunizieren kann (ohne cross-thread Exception) ist mir bekannt. Hier einen Delegate schreiben und in der Methode nach Control.InvokeRequired fragen. Somit erst mal alles in Ordnung. Was aber mache ich bei folgendem Sachverhalt. Die Hauptanwendung (das Hauptformular) besitzt ein RichtTextBox-Control zum Anzeigen von Hinweis- und Fehlermeldungen. Im Contentbereich der Hauptform werden je nach Menüpunkt UserControls in ein Panel geladen. Jedes UserControl erbt von BaseControl, in dieser ist ein Event ExchangeMessage_Event definiert. Jede Nachricht kommt also beim Hauptfenster an - wie aber bekomme ich das hin, wenn ich auch Nachrichten senden möchte, die in einem Thread (oder BackgroundWorker) gesendet werden sollen - gibt es so etwas wie IvonkeRequired auch für Events? Danke schon mal für etwaige Hilfe.

Gruß

20.05.2008 - 14:48 Uhr

Hingergrund ist das Problem dieses Threades. Ich habe eine Basisklasse mit der Methode InitializeGlobal. So, jetzt muss ich in der Designer-Klasse (Methode InitializeComponent) nach dem Initialisieren der ButtonControls und vor dem Zuweisen der Eventhandler, hier Button-Click, die Methode aufrufen. Das Problem ist, dass im Quellcode die Methode zwar erkannt wird (auch läuft das Programm ordnungsgemäß), nur "spinnt" der Designer, der Zeigt mir nur noch folgendes an:

One or more errors encountered while loading the designer. The errors are listed below. Some errors can be fixed by rebuilding your project, while others may require code changes.

Method 'Wisdom3000.Control.BaseControl.InitializeGlobal' not found.
Hide

at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression (IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement (IDesignerSerializationManager manager, CodeStatement statement)

Rebuild hilft nicht und auch will ich aber jetzt nicht auf den Designer komplett verzichten, da man hier sehr gut und schnell arbeiten kann, indem man einen Doppelklick auf ein Control durchführt oder aber in den Eigenschaften schnell neue Events deklariert. Kennt ihr das Problem?

Desweiteren würde ich mich freuen, wenn mir jemand posten könnte, wie ich mittels Reflection obiges Problem lösen kann, wie komme ich zu den Methoden? Ich will es nur wissen, denn z.B. bei einem Thread (den man mittels Reflection startet) würde ich ja das gleiche Problem haben. Danke schon mal für etwaige Antworten, auch wenn ich das Problem dann anders lösen werde, denn wie gerbivore schon angekündigt hat, sollte es hier ja eine bessere Lösung geben.

20.05.2008 - 06:55 Uhr

OK, ich habe das jetzt die Reihenfolgenänderung mit Reflection hinbekommen, sieht dann so aus ...

 

      private void InitialMethod(object sender, EventArgs e) {
        Delegate newDelegate = new EventHandler(this.NewMethod);
        Delegate oldDelegate = new EventHandler(this.InitialMethod);
        typeof(Button).GetEvent("Click").RemoveEventHandler(this.button1, oldDelegate);
        typeof(Button).GetEvent("Click").AddEventHandler(this.button1, newDelegate);
        typeof(Button).GetEvent("Click").AddEventHandler(this.button1, oldDelegate);
        MessageBox.Show("InitialMethod");
    }

    public void NewMethod(object sender, EventArgs e) {
      MessageBox.Show("NewMethod");
    }

funzzt soweit, nur habe ich noch ein Problem. Wie kann man denn die Methoden mittels Reflection dem EventHandler übergeben? Also mit MethodInfo funzzt das nicht. Gegenwärtig schreibe ich ja noch "hardgecoded" this.NewMethod und this.InitialMethod rein, dass soll aber mittels Reflection gemacht werden. Wer kann mir da jetzt helfen? Was denn das für ein Typ, den der Constructor vom EventHandler braucht? Ich lese da "nur" void(object, EventArgs) target. 8o
Danke schon mal für etwaige Hilfe im voraus.

19.05.2008 - 04:06 Uhr

Hallo,

ist es möglich, die Reihenfolge der zugewiesenen EventHandler zu ändern, bzw. ist es überhaupt möglich, die ganze Kette der zugewiesenen herauszubekommen?

z.B. added man ein Handler mit

this.btnTest.Click += new EventHandler(Click1_Event);

wie kann man jetzt

a) herausfinden, welche Eventhandler dem Button Click zugeordnet sind (Collection von allen zugeordneten Click Handlern ect.) - da muss man doch rankommen
b) Die Reihenfolge manipulieren, z.B. wenn ich jetzt als erstes Event (welches ja gerade Click1_Event ist) ein anderes zuweisen möchte und das aktuelle an die Position zwei schieben.

Wie geht das dann, wenn überhaupt? Danke schon mal für eure Antworten.

18.05.2008 - 16:01 Uhr

@herbivore, vielen Dank, genau so muss es sein, da bin ich jetzt gar nicht draufgekommen.

18.05.2008 - 00:52 Uhr

Hm, das mit dem Ableiten geht jetzt nicht mit meinem Problem .. habe ich nämlich gerade gemacht. OK, was will ich machen. Ich habe eine Hauptanwendung, diese includiert je nach Menüauswahl ein Usercontrol. Im Hauptmenü gibt es eine RichTextBox für Status- und Fehlermeldungen. Kommuniziert wird über ein Delegate mit jedem Usercontrol - hier habe ich ein Interface (mit delegate + event) geschrieben, welches jedes Usercontrol implementiert. Jetzt möchte ich, dass immer, wenn in einem Usercontrol auf einen Button geklickt wird (also jeder Usercontrolbutton), dass an die RichtTextBox erst mal "etwas" gesendet wird. So nach dem Motto, bitte alles alte Löschen, es geht von vorne los. Jetzt kann ich natürlich bei jeder ButtonClickEvent-Methode das explizit machen, jedoch ist das sehr nervig und fehleranfällig (da man dies ja schnell mal vergessen kann). Wie würdet ihr das Problem lösen?

17.05.2008 - 23:43 Uhr

Gibt es bei Windows-Forms Buttons einen sog. Filter, der immer angesprochen wird und danach automatisch an die definierte onClick-Methode weiterleitet ohne dass ich jetzt eine benutzerdefinierte Buttonklasse (Buttoncontrol) schreiben muss? Was ich möchte ist, dass wenn der Benutzer auf einen Button klickt, etwas "bestimmtes passiert" und danach an die onClick-Methode weitergeleitet wird. Gibt es hier ein Interface oder Event? Danke schon mal im voraus.

06.01.2008 - 14:49 Uhr

Hallo "Kollegen",

ich stelle eine verschiedene Anzahl von Usercontrols in einem Panel dar (Autoscroll ist true). Das Problem ist, dass wenn ich in ein Usercontrol klicke, dass sich dann immer automatisch der Scrollbalken zum Anfang des Controls selbständig hinbewegt. Wie kann man dies deaktivieren? Mit diesem Verhalten kann ich z.B. nicht arbeiten, wenn ich innerhalb eines Usercontrols ein Webbrowser-Control darstelle und sich in diesem Links befinden. Habe schon bei allen Eigenschaften "rumgespielt". Kennt jemand das Problem? Danke schon mal für etwaige Hilfe.

Hier ein kleines Beispiel.

.

Wenn ich auf einen von den vier Links klicke (Live Center, Stats & Infos ... ect), dann springt die Scrollbar automatisch nach oben (nicht ganz - wahrscheinlich zu dem Startpunkt (X, Y) des Controls, da es den Focus bekommt) .. nur, mit diesem Verhalten kann ich nicht auf Links klicken.

28.12.2007 - 00:59 Uhr

OK, ich habe die Lösung .. es geht mit display:none, hier wird kein Platz reserviert ...

<html>
  <body>
    <div style="border: 1px solid black">Box 1</div>
    <div style="border: 1px solid black; display: none" id="boxer">Some Text <br /><br /> .. and line feed</div>
    <div style="border: 1px solid black">Box 3</div><br /><br />
    <input type="button" onClick="document.getElementById('boxer').style.display = 'block'" value="Show" /> 
    <input type="button" onClick="document.getElementById('boxer').style.display = 'none'" value="Hide" />
  </body>
</html>

Gruß

28.12.2007 - 00:16 Uhr

Hallo "Kollegen",

OK, ist jetzt nicht primär C#, sondern HTML, denke aber, dass mir hier geholfen werden kann. Wie kann ich Elemente in einer HTML-Seite relativ anzeigen, wenn dazwischen Blöcke sind, die je nach Bedarf angezeigt werden sollen. Mein Problem ist, dass der Platz für die versteckte Box immer schon im Hintergrund mit eingerechnet wird. Wie kann ich dies vermeiden. Unten ein Beispiel. Ich möchte, wenn ich auf den Button klicke, dass die Box nicht nur dazwischen angezeigt wird (das tut sie ja auch), sondern dass Box 1 und Box 3 von Anfang an direkt untereinander angeordnet sind und wenn ich auf den Button klicke, die Box2 dazwischen reingeschrieben wird und Box 3 nach **unten verschoben ** wird. Kann mir jemand helfen? Muss ich mir da die Pixel merken und dann dementprechend anordnen? Das wäre ja übel. Danke schon mal im voraus.

<html>
  <body>
    <div style="border: 1px solid black">Box 1</div><br />
    <div id="boxer" style="visibility: hidden; border: 1px solid black">Box 2</div><br />
    <div style="border: 1px solid black">Box 3</div><br /><br />
    <input type="button" onClick="document.getElementById('boxer').style.visibility = 'visible'" value="Show Box 2" />
  </body>
</html>
12.12.2007 - 20:01 Uhr

Hallo "Kollegen",

wie ist denn die anerkannte Vorgehensweise, wenn eigenständige Projekte (z.B. Windowsservices) nicht nur auf projektabhängige Variablen (app.config) benötigen, sondern auch globale, die ggf. alle laufenden Projekte benötigen. Wie ist hier die Vorgehensweise? Die Appconfig-Sektion auszulagern fällt aus, da ja beides benötigt wird (lokale und globale Konstanten). Gibt es soetwas wie eine globale Config-Datei? Danke für eure Hilfe schon mal im Voraus. Link würde auch ausreichen. Weiss irgendwie nicht, wonach ich suchen soll.

12.12.2007 - 19:53 Uhr

So auf die Schnelle würde ich darauf tippen, dass Hibernate IMMER! eine id benötigt, und die muss innerhalb des class-elements an 1. Stele stehen. Das würde auch die "komische" Fehlermeldung begründen ... hier mal kurz ein Auszug aus einer meiner Mappinfiles:

<?xml version="1.0" encoding="UTF-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="Wisdom3000NHPersistence.Entities.Article, Wisdom3000NHPersistence" table="[Article]">
    <id name="Id" column="[id]" type="int">
      <generator class="identity" />
    </id>
    <property name="CreatedAt" column="[created_at]" type="DateTime" />
    <property name="ChangedAt" column="[changed_at]" type="DateTime" />
    <property name="Catalogue" column="[catalogue]" type="String" />
    <many-to-one name="Subject" column="[subject_id]" />
    <many-to-one name="ChangedUser" column="[changed_user_id]" />
    <many-to-one name="CreatedUser" column="[created_user_id]" />
    <bag name="Words" cascade="all-delete-orphan" inverse="true">
      <key column="[article_id]" />
      <one-to-many class="Wisdom3000NHPersistence.Entities.Word, Wisdom3000NHPersistence" />
    </bag>
  </class>
</hibernate-mapping>

Hoffe konnte helfen.

Nachtrag: OK, steht ganz klar im Zitat 1 und 2 drinnen, dass Hibernate die Id (oder composite Id oder cache) erwartet

12.12.2007 - 01:39 Uhr

@JuyJuka, @herbivore,

vielen Dank für eure Antworten, werde ich gleich umbauen. Super Forum hier 👍

11.12.2007 - 23:53 Uhr

Hallo,

meine Lösung läuft zwar, aber ich kenne mich nicht so richtig aus und würde gerne zwei Sachen wissen.

a) Ist die Umsetzung so richtig, gehe ich richtig vor? Ich habe noch nicht so viel Erfahrung mit Events und / oder Delegates
b) Wie kann ich in der Impl-Klasse beim Invoke verhindern, dass eine Dummy-Methode aufgerufen, bzw. registriert wird, die wäre in meinem Fall unnütz.

OK, hier der Sachverhalt

  1. Interface ...
namespace Betfair.MarketMonitor {
  /// <summary>
  /// Delegate for a change on an exchange market
  /// </summary>
  /// <param name="exchangeMarket">The ExchangeMarket object</param>
  public delegate void OnChange(ExchangeMarket exchangeMarket);

  interface IMarketMonitor {
    /// <summary>
    /// Event will be raised after any change on the ExchangeMarket object
    /// </summary>
    event OnChange OnChange_Event;

    
    void Process();
  }
}

  1. Eine Impl.-Klasse ...
namespace Betfair.MarketMonitor {
  /// <summary>
  /// Watches markets from the betfair web site
  /// </summary>
  class ExternMarketMonitor : IMarketMonitor {
    private long marketId = long.MinValue;
    
    // All available events
    public event OnChange OnChange_Event;

    /// <summary>
    /// Public constructor
    /// </summary>
    /// <param name="marketId">The market id</param>
    public ExternMarketMonitor(long marketId) {
      this.marketId = marketId;
      // ????????????????????????
      this.OnChange_Event += new OnChange(TestImpl);
      // ????????????????????????
    }

    public void TestImpl(ExchangeMarket exchangeMarket) {
      // Why this empty method ???
    }

    public void Process() {
      this.OnChange_Event.Invoke(null);
    }
  }
}
  1. Client
static void Main() {
      try {
        IMarketMonitor marketMonitor = new ExternMarketMonitor(234);
        marketMonitor.OnChange_Event += new OnChange(TestExtern);
        marketMonitor.Process();

So, das funktioniert wunderbar, die Methode TestExtern wird aufgerufen, nur möchte ich noch viele Ereignisse einbauen, muss ich da jedesmal so eine "Pseudozuweisung" (this.OnChange_Event += new OnChange(TestImpl);
) machen und jedesmal eine leere Methode schreiben? Geht das nicht einfacher .. kann man anstatt des Invoke auch etwas anderes verwenden, denn die "Kette" der Methoden besteht eigentlich immer aus einer Methode und nicht wie in dem Beispiel aus zwei Methoden, wobei eine einfach nur eine Hülle ist.

Danke schon mal für Hilfe. Ich hoffe, dass ich mein Problem einigermaßen verständlich rübergebracht habe.

27.11.2007 - 05:48 Uhr

Hallo Kollegen,

gibt es eine Möglichkeit, Konsoleausgaben abzufangen, bzw. gibt es implementierte Ereignisse, die Ausgaben auf die Konsole antriggern? Hintergrund ist folgender. Ich schreibe gerade eine Windowsapplikation und benutze hier ein Package, welches auf die Console logged, somit komme ich nicht an die Logginginfos, nur bei einer Consoleanwendung würde ich ran kommen. Wie könnte man dies lösen. Gegenwärtig logge ich in der Applikation in eine RichTextBox und möchte gerne auch die Konsoleausgaben vom Package in der Box stehen haben. Was ist hier die gängige Lösung?. OK, ich könnte ggf. in ein Textfile loggen und dieses in einem anderen Thread zyklisch abfragen, aber ist das nicht zuviel Aufwand?

Danke schon mal für etwaige Antworten.

24.11.2007 - 23:38 Uhr

OK, hat sich erst mal erledigt, ich habe im Netz was gefunden und habe das mit den Arrays verwendet, das sieht dann so aus:

 [XmlElement("process")]
    public NavigationProcess[] ProcessesArray {
      get {
        NavigationProcess[] navigationProcess = new NavigationProcess[this.Processes.Count];
        this.processes.CopyTo(navigationProcess, 0);
        return navigationProcess;
      }
      set {
        if(value != null) {
          NavigationProcess[] navigationProcesses = (NavigationProcess[])value;
          this.Processes.Clear();

          foreach(NavigationProcess navigationProcess in navigationProcesses)
            this.Processes.Add(navigationProcess);
        }
      }
    }

.. und funzzt bidirektional ... finde ich jetzt zwar nicht doll, aber es funzzt.

24.11.2007 - 21:52 Uhr

@a957m,

Hm .. dann mache ich aber was falsch. Kannst Du mir da helften?

Code:

XmlSerializer xmlSerializer = new XmlSerializer(site.GetType());
XmlTextWriter xmlTextWriter = new XmlTextWriter(@"C:\Test.xml", Encoding.UTF8);
xmlTextWriter.Formatting = Formatting.Indented;
xmlSerializer.Serialize(xmlTextWriter, site);
xmlTextWriter.Close();

In der Klasse NavigationSite ....

 /// <summary>
/// Property Processes
/// </summary>
[XmlArray]
[XmlArrayItem("process", typeof(NavigationProcess))]
public IList<NavigationProcess> Processes {
  get {
    return processes;
  }
}

.. und in der Klasse NavigationProcess habe ich dann ...

[XmlType]
  public class NavigationProcess { ... 

Die Liste ist gefüllt, jedoch schreibt der mir nur raus:

  <?xml version="1.0" encoding="utf-8" ?> 
  <site xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" shell="false" visible="true" /> 

X( .. die Liste wird also kommentarlos ignoriert. Da muss es doch zig Beispiellinks geben, sowas kommt doch fast in jeder XML-Datei vor. Was mache ich falsch?

24.11.2007 - 21:15 Uhr

Hallo Kollegen,

ich finde einfach keine Lösung im Inet. Ich möchte einfach Ein Objekt, welches u.a. eine Liste von Unterobjekten enthält mit dem XML-Serialisierer serialisieren. Muss man hier wirklich aus der Liste ein Array machen?

Hier mal ein Beispiel

 [XmlRoot("site") ]
  public class NavigationSite {...
  
  [XmlElement("process")]
  public IList<NavigationProcess> Processes { ...

wie würdet ihr dieses Problem am saubersten lösen?

Ich möchte dann in der XML-Datei stehen haben:

<?xml version="1.0" encoding="UTF-8" ?>
<site source="https://bwin.com" visible="true" shell="false" />
  <process>...
  </process>
  <process>...
  </process>
</site>

Also n-verschiedene process-Elemente.

Danke schon mal für eine etwaige Antwort. Ein guter Link wäre auch super.

24.11.2007 - 19:01 Uhr

@winSharp93,

ja, genau das habe ich gesucht, vielen Dank!