monthCalendar.SetDate(DateTime.Now.AddMonths(-3));
Der Hinweis war gut. Besten Dank.
Erst mit dem Tagesdatum vor drei Monaten initialisieren und dann wieder mit SetDate auf DateTime.Now setzen und den aktuellen Tag wieder selektiert zu haben.
Nochmals besten Dank.
Gruß
LordK
Ich glaube ich habe mich ungeschickt ausgedrückt. Ich will die Anzeige des Controls so verändern, dass es nach der Initialisierung die vergangen Monate anzeigt und nicht die zukünftigen.
Bezogen auf das Bild sollte es dann so aussehen, dass nach Programmstart unten rechts der Juni steht (also immer der akutelle Monat mit aktuellem Tag), unten links der Mai, oben rechts der April und oben links dann der März.
Ich wüsste jetzt nicht, wo man dafür ein DateTime einsetzen sollte.
Gruß
LordK
Hallo Zusammen,
ich habe in einer Anwendung ein MonthCalender Control mit der größe 2x2 (vier Monate sind gleichzeitig sichtbar). Leider steht links oben der aktuelle Monat, rechts davon Monat + 1, unten drunter dann Monat + 2 bzw. Monat + 3.
Da mein Programm allerdings nur auf Daten der Vergangenheit zugreift, hätte ich lieber das der aktuelle Monat rechts unten ist, und dann die letzten drei Monate nach links bzw. oben angezeigt werden.
Ist sowas möglich? Ich hab keine Option dafür gefunden und das right to left Layout macht ja auch was völlig anders.
Danke im Voraus und beste Grüße
LordK
Wenn du nicht dieser Ansicht bist dann hätte es auch gereicht hier zu posten.
Die Idee kam mir grundsätzlich erst, nach dem ich den Post schon im anderen Forum abgesetzt hatte. Und da sich hier vermutlich mehr C# Programmierer finden als im C++ Forum, probier ich es dann doch lieber noch mal hier.
Da ich sogar SeboStone schon direkt per Mail angeschrieben habe, und bisher keine Antwort bekommen habe, hoffe ich jetzt eher auf die Hilfe von jemanden der deutlich mehr Erfahrung hat als ich.
Im anderen Forum versprech ich mir nicht mehr all zu viel Erfolg, so wie der Thread schon aussieht.
Ich hoffe ich habe nicht zu viel missmut geweckt.
Danke & Gruß
LordK
[EDIT=herbivore]Abgeteilt von Wiedermal BackgroundWorker[EDIT]
Hi zusammen,
ich hab mal probiert den ThinBackgroundworker von SeboStone zu verwenden. Funktioniert eigentlich auch ganz gut, nur dummerweise scheint sich der Thread nicht richtig zu beenden. Z.B. wird die OnRunWorkerCompleted Methode nicht aufgerufen. Hatte da mal eine Test Messagebox eingebaut die leider nicht angezeigt wurde.
Verwende das ganze mit dem 3.5er SP1 Framework.
Hat jemand einen Tip, was man dazu machen muss?
Danke & Gruß
LordK
mal abgesehen davon, dass das Control.Invoke fehlt. 😃
Das kam später noch 😉
Das war nur der erste Test ob es überhaupt funktioniert.
Aber ich denke mal ich werde jetzt die Variante von herbivore probieren. Die mit der Statusklasse gefällt mir nicht so ganz und die mit dem progressreport-delegate kann ich mir im Moment nicht vorstellen, wie das aussehen müsste.
Danke für eure Hilfe
Gruß
LordK
Ich kann zwar im Moment nicht abschätzen, wie elegant / sicher meine Lösung jetzt ist, aber ich hab einfach den Eventhandler in Klasse B einfach als static definiert und das WinForm einfach direkt an dem statischen EventHandler registriert:
KlasseB:
internal static event EventHandler<TextEventArgs> MyEvent;
protected virtual void OnMyEvent(TextEventArgs e)
{
EventHandler<TextEventArgs> myEvent = MyEvent;
if (myEvent != null)
{
myEvent(this, e);
}
}
WinForm:
KlasseB.MyEvent += new EventHandler<TextEventArgs>(myObject_MyEvent);
private void myObject_MyEvent(Object objSender, TextEventArgs e)
{
MessageBox.Show(e.Text);
}
TextEventArgs:
public class TextEventArgs : System.EventArgs
{
private readonly string text;
public TextEventArgs(string text): base()
{
this.text = text;
}
public string Text
{ get { return this.text; } }
}
Ob es gut/schön ist, ist jetzt eine Sache, aber es funktioniert zumindestens. 😁
Gruß
LordK
schmeiss ein event. das form kann sich dann daran registrieren, bevor du den backgroundworker anschmeisst und dann kannst du in diesem die progressbar aktualisieren.
Würde das nicht aber bedeuten, dass die WinForm Klasse schon eine Referenz auf Klasse B haben müsste? Bisher wird eine Instanz der Klasse B ja erst erzeugt, wenn die execute Methode in Klasse A aufgerufen wird.
Danke & Gruß
Hallo Zusammen,
wie ich durch die Suche erfahren habe, ist dies hier schon ein ziemlich langes und immer wieder kehrendes Thema. Doch beim sichten der vorhanden Topics hab ich mein Problem irgendwie nicht ganz wieder gefunden.
Ich habe ein Form mit einer Statusleiste und einem Backgroundworker. Auf Knopfdruck wird der Backgroundworker gestartet, der eine Methode in einer anderen Klasse aufruft, in der wiederrum eine Methode in einer weiteren Klasse aufruft. In der letzten aufgerufenen Methode wird eine Schleife durchlaufen. Innerhalb der Schleife soll nun die Statusbar im WinForm aktualisiert werden. (Die angehängt Grafik verdeutlicht das hoffentlich noch mal etwas...).
Das man per Invoke die Elemente der GUI aktualisieren kann habe in inzwischen schon gelesen, doch meistens war dann die Verarbeitung noch in der WinForm Klasse, so das man direkt den delegaten bzw. das Control ansprechen konnte.
Wie kann ich nun aus den anderen Klassen heraus die Statusleiste updaten?
Muss ich tatsächlich eine Referenz des WinForms durch alle Klassen durchschleifen oder gibt es da eine elegantere Methode?
Vielen Dank im Voraus.
Beste Grüße
LordK
Hallo Zusammen,
ch habe eine NotifyIcon Anwendung nach der Vorlage von Herbivore geschrieben. Funktioniert soweit alles auch ganz gut, allerdings möchte ich jetzt noch die Möglichkeit einbauen, dass Programm von außen über WindowMessages zu steuern. Nach einiger Recherche fand ich heraus, dass das durch überschreiben der WndProc() Mehtode möglich ist. Doch da ich ja kein Form habe, hab ich auch keine WndProc Methode die ich überschreiben kann...
Hintergrund des ganzen ist, dass ich über USB ein IR-Empfänger am Rechner habe, der die Signale über eine Applikation namens Girder verarbeitet. Dieses Tool wiederrum kann z.B. über SendMessage Nachrichten an andere Applikationen schicken. Ziel des ganzen ist, dass ich ein Knopf auf der Fernbedienung drücke und Girder dann ein Command an meine Application weiter schickt, die dann wiederrum irgendeine Methode aufruft.
Gibt es eine Möglichkeit WindowMessages zu verarbeiten ohne das man ein Window hat?
Danke & Gruß
LordK