Laden...

Forenbeiträge von Gabe Ingesamt 22 Beiträge

14.11.2011 - 16:50 Uhr

Hi zusammen,

ich füge in einer Slide verschiedene Shapes als Textboxen dazu welche als Hyperlinks funktionieren.
Ich möchte mir jetzt die besuchten Hyperlinks beim Beenden der Präsentation merken. Leider finde ich kein Property oder Click-Event. Kann mir da jemand helfen?
Ich verwende ein Office 2010 Addin.

Danke und Gruß.
Gabe

29.09.2011 - 17:11 Uhr

Hmm, ich bekomme jetzt zwar eine exception gefangen und schreibe die in ein log-file - der hilfreiche Text mit e.ToString() lautet jedoch:> Fehlermeldung:

System.Runtime.InteropServices.SEHException: External component has thrown an exception.

Jemand ne Idee, wie ich da noch weitersuchen könnte?

Ich habe das hier gelesen SEHException-Klasse, aber WER jetzt schuld ist an dieser Exception weiß ich trotzdem nicht.

28.09.2011 - 10:38 Uhr

Wo steht denn, dass dieses "action" verfügbar sein soll? Wenn ich in die Library schaue, gibt's das nirgends in der Klasse RestRequest.

Da ist die ganze Solution verfügbar. Schau doch da mal rein.

16.09.2011 - 10:27 Uhr

Super danke für die Infos.

Ich habe das jetzt schnell nach "unconnected" link implentiert und lasse das mal so laufen. Mal sehen was die Ursache ist.

Wieder was gelernt. Danke. 😃

16.09.2011 - 10:04 Uhr

Hallo zusammen,

von Zeit zu Zeit stürzt von mir immer wieder ein Tool ab. Ich verwende darin verschiedene externe dlls, z.B. SharpSvn.

In meiner Main-Methode habe ich einen alles umfassenden Try/Catch-block um evtl. Fehler zu fangen und entsprechend auszuwerten. Theoretisch müssten alle Fehler hier drin aufgefangen werden.

Trotzdem bekomme ich immer wieder Fehler-Meldungen wie "Programm xy hat ein Problem festgestellt und muss beendet werden". Debuggen kann ich dann nicht mehr, der Prozess ist schon kaputt, nur die Fehlermeldung steht noch da. Die Fehler sind sporadisch und treten nur auf manchen Rechnern auf (auf diesen aber häufiger).
Evtl. könnte es auch an der Leistungsstärke der Rechner liegen, da es hauptsächlich schwächere Rechner sind, auf denen es auftritt.

Ich vermute dass irgendein anderer Prozess, oder evtl auch die eingebundenen dlls Probleme machen.

Wie kann ich das herausfinden / loggen / debuggen?
Der Fehler ist doch definitiv nicht in meinem Code, sonst würde ich doch in meinem Try/Catch-block hängen bleiben, oder sehe ich das falsch?
Kann eine eigenbundene dll einen Fehler verursachen, den ich nicht fangen kann?

Danke für eure Antworten.
Grüße Gabe

20.07.2010 - 18:08 Uhr

Hatte hiermit gerade auch ein Problem. Hier der Vollständigkeit meine Lösung:

Anforderungen:

  • ClickOnce-Anwendung
  • Dateien z.B. pdf, xps sollen dem Setup-Projekt übergeben werden

Lösung:

  • Datei einbinden in Projekt

  • Datei --> Eigenschaften --> Build Action --> Content

  • Datei --> Eigenschaften --> Copy to output --> Copy if newer

  • Publish-Einstellungen --> Application Files --> kennzeichnen als "required"

  • Datei kann in Code folgendermaßen geöffnet werden:


Process.Start(Application.UserAppDataPath + @"\example.pdf");

Viel Spaß
Gruß Gabe

23.02.2010 - 13:00 Uhr

Ich hol das mal wieder hoch, weil es bei immer noch aktuell ist. Weiß da jemand was?
Gruß Gabe

04.02.2010 - 00:38 Uhr

Hallo zusammen,

ich habe verschiedene Objekte die INotifyPropertyChanged implementieren und in einer BindingList verwaltet werden. Die Liste wird im DGV angezeigt, also jeweils die Eigenschaften der Objekte. Wenn ich einer Eigenschaft einen anderen Wert zuweise, wird dies vom DGV sofort angezeigt.

Jetzt hätte ich gerne ein Event, wenn sich der Zelleninhalt geändert hat, da ich die Zellenansicht noch bearbeiten möchte.

Gibt es ein Event, das mir anzeigt, welche Zelle im DGV geändert wurde, wenn das PropertyChanged-Event ausgelöst wurde?

CellValueChangedEvent spricht bei mir nur beim Laden der Form an für die Header-Zeilen. Danach krieg ich das nicht mehr.

Das DataBindingCompleteEvent liefert mir ein "ItemChanged", aber ich weiß gerade nicht, wie ich die Zelle (Row-/Column-Number) herausfinden kann.
Kann ich das irgendwie casten?

Wer kann mir da weiterhelfen?

Gruß Gabe

02.02.2010 - 19:40 Uhr

Hallo Tarion,

schau dir mal die 2 Sachen an:

www.wireshark.org

www.winpcap.org

Mit winpcap gibt es auch eine csharp-Bibliothek, die du verwenden kannst.

Gruß Gabe

25.01.2010 - 10:43 Uhr

Meines Wissens brauchst du die jeweilige Office-Version dafür.

Gruß Gabe

Edit: Sorry, war grad zu schnell, mit den PIAs bin ich nicht sicher
Edit: Kurz ausprobiert, geht nicht mit den PIAs. Brauchst demnach die richtige Office/Word-Version.

20.01.2010 - 12:20 Uhr

Hallo tequila slammer,

Projekteigenschaften deiner Klassenbibliothek --> Erstellen --> XML-Dokumentationsdatei aktivieren

Dann müsst es gehen.

Gruß Gabe

EDIT: Referenz evtl. noch mal neu einbinden

10.01.2010 - 21:19 Uhr

Hallo zusammen,

viele Dank für die tollen und schnellen Antworten! Ihr seid spitze. 👍

Dass das soo einfach geht hab ich jetzt nicht gedacht. Die Lösung von TripleX funktioniert wirklich einwandfrei. Werde das noch anpassen.

Danke auch an zommi für die ausführliche Beschreibung. Echt klasse!

Gruß Gabe

10.01.2010 - 19:22 Uhr

Hallo zusammen,

ich habe gerade ein Projekt, bei dem ich verschiedene Strings sortieren muss. Die Strings sehen immer so aus:

Zahl / Trennzeichen / Zahl / ..... Trennzeichen / Zahl
Bsp.: 1.2.3.4.5

Diese Strings haben unterschiedliche Längen. Ich kann z.B. 1.2 haben oder 1.2.3.4.5.6

Die Zahlen sind nicht beschänkt. Es kann z.B. auch 1.1234.5.6 sein.

Das ganze würde ich dann gerne sortiert in einer List<string> ablegen.

Die oben aufgeführten Beispiel-Werte sollten also dann so vorliegen:

1.2
1.2.3.4.5
1.2.3.4.5.6
1.1234.5.6

Der Hintergrund ist eine Baum-Struktur mit diversen Ästen und Unterästen.
1.2 wäre ein Hauptarm und 1.2.3.4.5 ein untergeordneter Ast.

Ich habe mir überlegt, die Strings über String.Split in String Arrays zu zerteilen. Die kürzesten Arrays wären folglich meine Hauptäste. Da müsste ich dann die anderen entsprechend zuordnen.

Kann mir da jemand eine Idee geben für den Algorithmus? Oder würdet ihr ganz anders vorgehen?

Vielen Dank schon mal für eure Antworten.
Gruß Gabe

Edit: Eine andere Überlegung: Wenn ich die Werte in eine Tabelle schreibe müsste ich zuerst nach der ersten Zahl sortieren, dann nach der zweiten inkl. der ersten, dann nach der dritten inkl der ersten und zweiten usw. Ich hoffe ihr versteht was ich meine... 😃

17.12.2009 - 14:48 Uhr

Hallo zusammen,

ich verwende die oben genannte Klasse "SerializableDictionary" und habe als Key einen String und als Value ein selbst erstelltes Objekt. Das sieht dann so aus:


public SerializableDictionary<string, Asn1Object>;

Das Serialisieren und Deserialisieren funktioniert auch wunderbar. In meinem Xml habe ich jetzt einen kleinen Schönheitsfehler, bzw. ich hätte das gerne anders.
Die Elemente werden als string und Asn1Object abgespeichert:


<string>...</string>
...
<Asn1Object>...</Asn1Object>

Diese Namen würde ich gerne abändern. Kann mir jemand sagen wie das geht? Bei den Feldern in der Klasse kann ich ja ein [XmlElement(ElementName = "Test")] davor einbauen, doch wie mache ich das in diesem Fall?

Gruß Gabe

27.11.2009 - 14:12 Uhr

Kurze Ergänzung für die Suchmaschinen:

Das Schließen von offenen Word- und Visio-Dateien funktioniert genauso... 🙂

Super Thread. Ist der nicht schon was für die FAQs? 👍

Gruß Gabe

25.11.2009 - 17:38 Uhr

Problem gelöst...

Irgend ein anderer Thread hat mir den Tip gegeben den Macrorecorder laufen zu lassen. Die Methode die ich gesucht habe heißt "ExportAsFixedFormat". Unten ein Beispiel.


 if (app == null)
            {
                app = new ApplicationClass();
            }
            try
            {
                app.Visible = false;
                app.Documents.Open(@"C:\temp\test.vsd");
                app.Application.Visible = false;
                
                object missingObject = Missing.Value;
          
                app.ActiveDocument.ExportAsFixedFormat(
                    VisFixedFormatTypes.visFixedFormatPDF,
                    @"C:\temp\test.pdf", 
                    VisDocExIntent.visDocExIntentPrint,
                    VisPrintOutRange.visPrintAll,
                    1,
                    1,
                    true,
                    true,
                    true,
                    true,
                    true,
                    missingObject);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }

Wichtig ist das MissingObject. Die optionalen Parameter kann man nicht einfach weglassen, sondern muss man als Missing.Value übergeben.

Vielleicht kann es ja mal jemand gebrauchen.

Gruß Gabe

25.11.2009 - 15:11 Uhr

Hallo zusammen,

gibt es eine Möglichkeit, die "PDF veröffentlichen"-Funktion in MS Office 2007 direkt anzusprechen?

Ich habe bisher nur etwas gefunden um ein Word-Dokument als PDF zu drucken.

Ich bräuchte das aber speziell für Visio und würde gerne die Funktion "PDF veröffentlichen" nutzen, die ja mit Office 2007 und SP2 standardmäßig dabei ist. Am besten wäre es natürlich, wenn die Funktion so allgemein wäre, dass ich jedes Office07-Dokument damit als PDF drucken könnte.

Weiß da jemand was?

Gruß Gabe

EDIT: SP2 anstatt SP1

07.11.2009 - 22:33 Uhr

Hallo zusammen,

ich habe hier ein Problem mit vielen Events, und hoffe es kann mir jemand weiterhelfen.

Ich habe ein Klasse "Geräte". Jedes Objekt "Gerät" läuft in einem eigenen Thread.
In meinem Haupt-Thread empfange ich Daten. Die Daten sollen im aktuellen Fall an jedes Gerät gesendet werden.

Die Geräte laufen in einer Endlosschleife (hab das so übernommen...) und warten auf ein Event, dass Daten eingegangen sind.


 while (true)
            {
                manualEvent.WaitOne();
                this.Receive(Daten)
                manualEvent.Reset();
            }

Wenn ich in meinem Hauptthread Daten empfange, übergebe ich die Daten an das Gerät und löse das Event aus, dass es Daten empfangen hat.


        for (int i = 0; i < GeraeteListe.Count; i++)
                    {
                        GeraeteListe[i].SetReceivingData(Daten);
                        GeraeteListe[i].ManualEvent.Set();
                    }

Ok soweit mal die Beschreibung. Ich hoffe das ist ein wenig verständlich.

Mein Problem:
Habe ich wenig Geräte im Programm, läuft das ganze wunderbar. Bei mehreren Geräten z.B. 100 kommen nicht mehr alle Daten an.
Die ersten Geräte bekommt eigentlich noch alle Daten. Beim letzten gehen aber viele verloren.
Ich möchte jedoch sicherstellen, dass alle Daten ankommen, dass auf jedes Event reagiert wird.

Wenn ein Gerät Daten empfängt, läuft ja dessen Thread. Habe jetzt das Folgende zum Test eingebaut:


       private bool GeraetNochNichtFertig()
        {
            foreach (Geraet geraet in GeraeteListe)
            {
                if (geraet.OwnThread.ThreadState == System.Threading.ThreadState.Running)
                {
                    return true;
                }
            }
            return false;
        }

Nach der obigen foreach-Schleife, in der die Events gefeuert werden, warte ich jetzt in der folgenden Schleife, dass alle Threads wieder beendet sind.


                    do
                    {

                    } while (GeraetNochNichtFertig());

Das hat das Ganze schon mal verbessert, er kommen aber immer noch nicht ALLE Daten an den Geräten an. Außerdem bremse ich ja damit mein Programm aus.

Meine Frage:
Gibt es da grundsätzlich Probleme wenn zu viele Events nahezu gleichzeitig gefeuert werden, dass diese nicht mehr erfasst werden? Wie kann ich dieses Problem umgehen?
Habe noch nicht so viel Erfahrung und habe diesen Programmteil auch übernommen, könnte es aber auch noch umbauen, wenn mir jemand einen Weg zeigt.

Vielen Dank schön mal für Antworten.

Gruß Gabe

07.11.2009 - 21:46 Uhr

irgendwie hab ich da gepennt...

INotifyPropertyChanged funktioniert wunderbar. Vielen Dank.

04.11.2009 - 18:54 Uhr

Sorry, dass ich so etwas altes ausgrabe... aber immerhin habe ich gesucht und mein Problem geht in die gleiche Richtung.

Ich habe eine BindingList<T> in der sich verschiedene Objekte einer Klasse befinden.
Dann habe ich ein DataGridview, das als BindingSource diese BindingList hat.

Ich kann die Objekte anlegen usw. das klappt alles einwandfrei. In der DataGridview werden die verschiedenen Eigenschaften eines Objektes allerdings nur aktualisiert, wenn eine Zelle neu gezeichnet wird, z.B. beim Scrollen, oder wenn ich in eine Zelle klicke bzw. sie markiere. D.h. die Eigenschaften wurden in meinem Objekt geändert, die DataGridView hat es noch nicht mitbkommen.

Gibt es eine direkte Möglichkeit, dass Aktualisieren zu erzwingen?
Refresh() funktioniert; Timer, der Refresh aufruft finde ich nicht schön; über Events im Setter würde es gehen.
Geht das auch einfacher?

04.11.2009 - 09:43 Uhr

Hallo ErfinderDesRades 😁

dein Beispiel hatte ich mir eigentlich schon angeschaut, aber erst jetzt ist mir aufgefallen, dass du Icons UND Text in einer Zelle hast.

Meine Buttons sollen alles das gleiche Bild bekommen - im Prinzip so ein Play/Stop-Symbol das entsprechend des Zustandes dann angezeigt wird.

Jeder Button ist auch immer die gleiche Variable von unterschiedlichen Objekten. Dürfte also eigentlich kein großes Problem sein.
Ich werde es mal mit Cellpainting probieren.

Edit: Hier noch meine Lösung - klappt wunderbar


        private void MainDataGridView_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
        {
            if (e.ColumnIndex == 0 && 0 <= e.RowIndex && e.RowIndex < GeraeteListe.Count)
            {
                e.Handled = true;
                e.PaintBackground(e.CellBounds, (e.State & DataGridViewElementStates.Selected) > 0);
                Image Img;
                if (GeraeteListe[e.RowIndex].SSwitch == "AUS")
                {
                    Img = imageListStartStop.Images[0];
                }
                else
                {
                    Img = imageListStartStop.Images[1];
                }
				// Formatierung: Grafik immer quadratisch und mittig mit kleinem Rand
                e.Graphics.DrawImage(
                    Img, 
                    e.CellBounds.X+e.CellBounds.Width/2-(e.CellBounds.Height-6)/2, 
                    e.CellBounds.Y+3,
                    e.CellBounds.Height-6,
                    e.CellBounds.Height-6);
                e.PaintContent(e.CellBounds);
            }
        }

03.11.2009 - 23:34 Uhr

Hallo zusammen,

habe hier in meiner DataGridview eine Spalte mit Buttons. Gibt es eine Möglichkeit diesen Buttons ein Bild zuzuweisen, oder kann ich hier nur die Color setzen? 🤔

Habe in meiner Form mehrere Images den Buttons zugewiesen und jetzt wäre es schön, wenn das auch in der Gridview ginge.

Gruß Gabe