Laden...
Avatar #avatar-2965.gif
Michbeck1983 myCSharp.de - Member
Software-Entwickler (Dipl.-Inf. (FH)) Augsburg Dabei seit 20.08.2008 239 Beiträge
Benutzerbeschreibung
Was interessiert mich mein Geschwätz von gestern? (Konrad Adenauer)

Forenbeiträge von Michbeck1983 Ingesamt 239 Beiträge

26.01.2009 - 13:12 Uhr

Daten ins Eventlog speichern ist kein Problem. Es gibt etwa die Klasse EventLog aus dem Namensraum System.Diagnostic, mit der du Einträge bearbeiten/erstellen kannst.

26.01.2009 - 10:18 Uhr

Etwa so:


if (myControl is TabControl)
{
  // Do something
}

26.01.2009 - 10:11 Uhr

Jedes Form hat eine Property Controls, die du durchlaufen kannst.

26.01.2009 - 10:02 Uhr

Die Lösung für dieses Problem würde mich auch interessieren. Dieser Fall passiert mir oft, wenn ich ein Form mit einem Menü bzw. einem Toolstrip-Menü baue, in dem Grafiken für die Icons/Buttons dargestellt werden, und ich dann eines der Icons lösche bzw. den dazugehörigen Button entferne. Dann wird das komplette Menü nicht mehr dargestellt...

26.01.2009 - 07:27 Uhr

Brötchenverdiener und seitdem weniger Freizeitprogger als während dem Studium...

24.01.2009 - 17:54 Uhr

Könnte höchstens dann der Fall sein, wenn du im aufrufenden Fenster die Eigenschaft "Topmost" auf true gesetzt hast. Dann erscheinen andere Fenster, deren "Topmost"-Eigenschaft nicht ebenfalls auf true gesetzt sind, im Hintergrund... andere Möglichkeiten fallen mir spontan auch nicht ein.

24.01.2009 - 12:50 Uhr

Die Dateien stören doch nicht bei der Entwicklung oder? Normalerweise kannst die Dateien auch einfach löschen...

23.01.2009 - 19:22 Uhr

Ich bin auch kein wirklicher Karnevals-Fan. Konnte mich die letzten Jahre immer erfolgreich davor drücken. Dieses Jahr werde ich aber wohl von meiner Freundin dazu genötigt, zumindest einen Karnevals-Ball mitzumachen. Dafür mach ich mir aber keine Gedanken übers Kostüm... das soll meine Freundin machen (zugegebenermaßen, das kann ein großes Risiko sein 😄)

23.01.2009 - 11:06 Uhr

Ja. Benutze den Befehl "continue".

23.01.2009 - 11:03 Uhr

Gerade bei Dateioperationen mache zumindest ich sicherheitshalber immer noch vorher ein File.Exists() rein, um wirklich ganz sicher zu gehen das die Datei auch vorhanden ist. Es kann immer irgendein blöder Speziallfall passieren und die Datei kurz vorher verschütt gehen und dann kracht es. Außerdem kostet diese eine Zeile auch nicht soviel Performance 😄

23.01.2009 - 10:59 Uhr

Außerdem ist das eigentlich ein ganz klassischer Fehler, dessen hauptsächliche Quelle durchs Debuggen herausgefunden werden kann. Entweder ist listbox1 null oder deine Variable, die du hinzufügen willst.

22.01.2009 - 15:46 Uhr

Das .Net Compact Framework für die Entwicklung für PDA's u.ä.

22.01.2009 - 14:59 Uhr

Oder so, auch kein schlechtes Spiel, zock ich grad das 3er aufm Nintendo DS 🙂 Danke für die Info 😁

22.01.2009 - 14:54 Uhr

Mein Nickname ist eine Zusammenführung meines Vor- und Nachnamens, was irgendein Kumpel vor Jahren mal gemacht hat weil er zuviele "Michael"'s kannte und ihm "Beck" auch nicht so toll vor kam. Daraus wurde dann also "Michbeck", und was das 1983 bedeutet sollte wohl klar sein 😄

Der Avatar kommt soweit ich weiß von Zelda, was ich früher sehr gern gezockt habe.

22.01.2009 - 08:30 Uhr

.NET ist leider nicht abwärtskompatibel sondern erzwingt immer, dass die CLR-Version die gleiche ist, mit der die Anwendung auch kompiliert wurde. Das hat den Vorteil, das MS nicht ständig irgendwelche Altlasten mitschleppen muss, damit die Runtime abwärtskompatibel bleibt. Anders hingegen ist es bei den public Klassen in Framework, diese werden wohl die nächsten X-Versionen mitgeschleift. Die Versionen 3.0 und 3.5 sind beide auf Basis der CLR-Runtime 2.0 mit zusätzlichen C#-Compiler-features und neuen Framework-Dateien.

Das stimmt natürlich, da habe ich mich falsch ausgedrückt. Danke für die Korrektur 👍

21.01.2009 - 16:30 Uhr

Ich kann dir nicht 100%ig genau sagen wie du das machst - es gibt aber Haltepunkte, die an Bedingungen geknüpft sind (rechte Maustaste auf den roten Breakpoint, dort "Bedingung..."), das würde ich mir mal anschauen.

21.01.2009 - 14:37 Uhr

Du musst als ersten Parameter eine Instanz der Klasse System.Array benutzen. Also den Parameter field von string[] in Array konvertieren, dann sollte es funktionieren.

21.01.2009 - 13:32 Uhr

.Net ist seit Version 2.0 abwärtskompatibel. Unter 2.0 entwickelte Programme laufen auch auf dem 3.5er oder 3.0er. Nur die ersten Versionen 1.0 und 1.1 benötigen genau die Runtime-Version, unter der sie entwickelt wurden.

20.01.2009 - 11:58 Uhr

Also meiner Meinung nach ist ein Windows-Dienst einfacher in das System zu integrieren als eine Konsolenanwendung, die per Autostart gestartet werden müsste und unter Umständen ein Konsolenfenster (falls nicht minimiert/versteckt) anzeigt.

Den einzigen Mini-Nachteil von Windows-Diensten ist meines Erachten das "schwierigere" Debuggen. Da solltest du deine Architektur und Methoden von vornherein so designen, dass du mit einem separaten Konsolenprogramm lokal testen/debuggen kannst, bevor du jedes Mal einen Rebuild für den Dienst starten musst (und das Prozedere Deinstallieren/Neuinstallieren startest).

20.01.2009 - 07:10 Uhr

Das geht normalerweise relativ einfach:


ExcelApplication app = new Excel.Application();
string workbookPath = @"C:\workbook.xls";
Workbook workbook = app.Workbooks.Open(workbookPath, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);

Was die Parameter der Open()-Funktion im Einzelnen bedeuten, schaust am besten in der MSDN nach...

15.01.2009 - 14:07 Uhr

Assembly Binding Log Viewer-Tool

Zitat: "Im Assembly Binding Log Viewer-Tool werden Details zu Assemblybindungen angezeigt. Mit diesen Informationen lässt sich leichter diagnostizieren, weshalb zur Laufzeit in .NET Framework keine Assembly gefunden werden kann."

Also ein wenig selbst musst du schon tun, wir können das Programm ja nicht für dich bedienen 😉

15.01.2009 - 13:44 Uhr

Für das Installieren eines Assembly in den GAC benutzt du das Tool "gacutil.exe" aus dem Framework-SDK. Benutzungshinweise stehen in der MSDN-Doku. Ob damit das Problem gelöst wird weiß ich nicht, da ich mich mit Eplan nicht auskenne, aber die Fehlermeldung sieht sehr nach einer fehlenden Referenz oder einem nicht-existierenden GAC-Verweis aus.

15.01.2009 - 12:29 Uhr

Vielleicht blöde Frage, aber hast du in deinem Projekt einen Verweis auf die Eplan-Assembly gesetzt bzw. ist diese im GAC installiert? Wäre jetzt des erste was mir da einfällt...

15.01.2009 - 11:30 Uhr

Da würde ich mir keine Sorgen machen. Manche Konzepte der OO muss man einfach mehrfach lesen und (ich wiederhol mich da gern) fleissig selbst programmieren, irgendwann mal klappt der Schalter um und du hast es kapiert 😉

15.01.2009 - 11:23 Uhr
  1. Falsches Forum. Dafür gibt es z.B. myCSharp: Buchempfehlungen.

  2. Solche Titel sind immer mit Vorsicht zu genießen. Programmiersprachen lernt man nicht in 21 Tagen, und in all ihren Feinheiten vllt sogar in Wochen/Monaten noch nicht. Und lesen alleine bringt auch nichts, du musst fleissig mitprogrammieren, die Beispiele nachprogrammieren und dir eigene Projekte überlegen.

Nicht verzweifeln, einfach weiterlesen und lernen 😁

15.01.2009 - 10:09 Uhr

Zumindest in Fällen, in denen es nur um die Auswahl von einzelnen Nodes geht, ist XPath ja auch "einfach" 😉

14.01.2009 - 22:55 Uhr

Dazu müssten wir wissen, wo genau die Exception geworfen wird... in welcher Zeile genau tritt der Fehler auf?

14.01.2009 - 22:23 Uhr

Rauchen: jawoll 😁
Trinken: gerne, aber eher unregelmäßig und nach Lust und Laune
Sport: Im Winter Eishockey, im Sommer Inline-Hockey, Fahrradfahren, Bolzen
Ernährung: ungesund, zwar kein Junkfood und relativ viel Salat, aber viel zu unregelmäßig 😁

14.01.2009 - 16:12 Uhr

Dann bleibt es aber trotzdem schwer, dir zu helfen. Du solltest bei Services auf jeden Fall die Benutzerrechte, das Konto unter dem der Service läuft etc. untersuchen. Insofern ist es ja ganz gut das du einen Rechner hast auf dem es läuft, da sollte das Problem einigermaßen gut zu identifizieren sein.

Manchmal hilft auch ein einfaches Deinstallieren/Neuinstallieren von Services, zumindest war's bei mir öfters so wenn sie gezickt haben 😁

12.01.2009 - 12:43 Uhr

Es gibt auch das DsoFramer-Control (http://support.microsoft.com/kb/311765).

Dies ist ein ActiveX-Control das man dann als Steuerelement einbinden kann und somit Word oder auch Excel darstellen.

12.01.2009 - 08:22 Uhr

Hi,

"Sprechblasen" kannst du am besten mit der Komponente ToolTip aus dem Namensraum System.Windows.Forms darstellen. Diese Komponente kannst du auf dein Form ziehen und dann jedem Steuerelement, das einen Tooltip benötigt, einen spezifischen Text zuweisen.

Gruß,
Michbeck1983

27.08.2008 - 18:03 Uhr

Kenne auch nicht wirklich einen besseren Weg als über try-catch-Konstrukte. Ich hab mir mal eine Methode dazu geschrieben, die das über das Domain-Objekt löst:


private bool IsActiveDirectoryAvailable() {
  try {
    Domain domain = Domain.GetComputerDomain();
    return true;
  } catch (ActiveDirectoryObjectNotFoundException) { return false; }
}

Für meine Zwecke hat's gereicht, weiß aber nicht ob es auch wirklich alle Anwendungsfälle abdeckt...

27.08.2008 - 14:39 Uhr

Servus,

ich benötige dringend Hilfe zu folgendem Problem: Ich habe einen Windows Service geschrieben, der fleißig Einträge in das Windows-Eventlog (Application) schreibt. Diese Einträge möchte ich nun von meiner GUI, die auf einem anderen Rechner läuft, auslesen, d.h. ich versuche über

EventLog result = new EventLog("Application", "ServerName");

das Log auszulesen. Hier entsteht noch kein Fehler, allerdings wird eine UnauthorizedAccessException geworfen, sobald ich auf irgendein Member von log zugreifen möchte:

LogDisplayName = "result.LogDisplayName" hat eine Ausnahme vom Typ "System.UnauthorizedAccessException" verursacht.

Meine Recherchen haben ergeben, das sich dieses Problem wohl irgendwie mit Impersonation lösen müsste - aber ich krieg's einfach nicht gebacken. Wenn ich Impersonation benutze, dann heißt das wohl, das ich mich in meiner GUI für einen bestimmten Codeabschnitt als "anderer Benutzer" ausgebe, der allerdings in meinem Fall auf dem Server vorhanden sein muss - oder versteh ich das falsch?

Es gäbe natürlich auch die Lösung, das EventLog über WMI auszulesen - diese Lösung möchte ich aber nur im Notfall einsetzen.

(Das gleiche Problem/dieselbe Exception habe ich auch an einer anderen Stelle mit einem ServiceController-Objekt, insofern wäre es schön wenn mir jemand helfen könnte bzw. mir einen Ansatzpunkt gibt.)

Gruß Michbeck1983

20.08.2008 - 21:14 Uhr

Super 😁 Habs jetzt mit einem Thread gemacht (wie in der FAQ beschrieben)... wieso bin ich auf sowas nicht gleich gekommen 🤔

Vielen Dank 👍

20.08.2008 - 20:43 Uhr

Auf die Idee bin ich auch schon gekommen, sie ist dann aber daran gescheitert das ich auf die Schnelle nicht wusste wie ich eine Spalte "unsichtbar" mache und dann hab ich das Problem erstmal nach hinten geschoben...

Okay ich werd mich morgen mal in der Arbeit dranhocken 😁 Ich dachte halt zuerst probierst es mal mit dem BindingSource =)

20.08.2008 - 20:41 Uhr

😁

Schon klar, es sollen ja auch gar nicht alle 40.000 Einträge angezeigt werden - im Endeffekt würde es wohl nur um ... hm kommt drauf an, ich sag jetzt mal 100 Stück gehen. Die muss ich halt irgendwie aus dem EventLog mit 40.000 rauskriegen, das verlängert die Zeit auch so ewig.

Ich bräuchte also entweder ne Möglichkeit, das EventLog-Objekt schon so zu erzeugen, das es nur die Elemente beinhaltet, die von meinem Service kommen, oder irgendwie (ich weiß da auch nicht wirklich wie) die Liste schneller zu durchlaufen...

20.08.2008 - 20:29 Uhr

Hallo,

ich suche nach einer Möglichkeit, die Einträge meines DataGridView nach einem bestimmten Bild, das in einer Zelle angezeigt wird (Datentyp Image), zu filtern.

Hintergrund: Die Quelltabelle kommt von einem SQL Server 2005 Express Edition. Dort gibt es ein Bit-Feld, das den Erfolg eines Datenbank-Satzes anzeigt. In meinem DataGridView zeige ich eine "transformierte" Tabelle an, die die Daten benutzerfreundlicher anzeigt. Darunter unter anderem, das das Bit-Feld umgesetzt wird in ein entsprechendes Bild, das ich als Ressource eingebunden habe (nach dem Motto: wenn 0 dann Bild1, wenn 1 dann Bild2).

Nun möchte ich dem Benutzer die Möglichkeit geben, die Einträge nach Erfolg/Misserfolg zu filtern, wozu ich eigentlich ja jetzt nach dem Bild filtern müsste. BindingSource scheint, soweit ich das gesehen habe, dies nicht zu unterstützen.

Gibt es einen besseren Weg, die Einträge zu filtern, oder muss ich die Quelltabelle mit einer neuen Abfrage "filtern"?

Gruß
Michbeck1983

20.08.2008 - 20:24 Uhr

Servus,

ich benötige Hilfe zu folgendem Problem: Ich habe einen Windows-Service geschrieben, der Einträge in das Application-EventLog schreibt. Diese Einträge zeige ich in einem Windows-Form an, und zwar in einer ListView.

Das Problem ist das Auslesen bzw. das Hinzufügen der Elemente, den dies dauert quälend lange (ca. 5-10 Sekunden).

Zur Erläuterung mein Quellcode: ich erstelle ein EventLog-Objekt über den Konstruktor

eventLog = new EventLog("Application", Environment.MachineName);

Danach bin ich die gesamte Liste durchlaufen, habe geprüft ob als Quelle mein Service steht und dann die Elemente in die ListView eingefügt:


            for (Int32 i = eventLog .Count - 1; i >= 0; i--)
            {
                if (eventLog .Entries[i].Source.Equals("meinService"))
                    continue;

                ListViewItem item = new ListViewItem(new String[] { 
                    eventLog.Entries[i].EntryType.ToString(), eventLog.Entries[i].TimeWritten.ToShortDateString(),
                    eventLog.Entries[i].TimeGenerated.ToShortTimeString(), eventLog.Entries[i].Source, eventLog.Entries[i].Category, 
                    eventLog.Entries[i].InstanceId.ToString(), eventLog.Entries[i].UserName, preloadedEventList[i].MachineName, eventLog.Entries[i].Message
                });

                // Hier kommt noch ein wenig anderer Code...

                this.lstEventlogs.Items.Add(item);
            }

So, die zweite Idee die ich hatte war, die Liste vorher zu durchlaufen, ein Array aus ListViewItems zu erzeugen und dann über ListView.AddRange die ganzen Elemente hinzuzufügen. War aber auch nicht wirklich schneller.

Dann habe ich in einer dritten Version versucht, das EventLog "vorzufiltern" und dann die Items in der Schleife aus einem gefiltertem Array zu lesen, war aber (im Nachhinein logischerweise) auch nicht schneller.

Gibt es irgendeine Möglichkeit, dies zu beschleunigen? Das Application-EventLog auf meinem Entwicklungsrechner hat jetzt natürlich über 40.000 Einträge, auf dem Produktivrechner werden's aber u.U. auch nicht weniger sein.

Gruß
Michbeck1983