Laden...

Forenbeiträge von briquet Ingesamt 33 Beiträge

24.05.2013 - 13:33 Uhr

Hallo Entwickler,

ich wollte mich jetzt mal an Interop versuchen. Ich habe in einen PowerPoint-Template (dotx) ein Layout in einem Folienmaster erstellt. Diese Layout (video) enthält ein Shape welchen Videos aufnehmen kann. Dieses Template soll in einem Add-In verwendet werden.
Mein Code sieht so aus (wahrscheinlich etwas um die Ecke gedacht, aber soweit funktioniert es wenigstens 😉 )


PowerPoint.Presentation vorlage = this.Application.Presentations.Open("ppVorlage.potx", Office.MsoTriState.msoCTrue);
PowerPoint.Presentation presentation = this.Application.ActivePresentation;
 PowerPoint.CustomLayout layout_video = null;
foreach (PowerPoint.CustomLayout layout in vorlage.SlideMaster.CustomLayouts)
                if (layout.Name.ToLower() == "video")
                    layout_video = layout;
PowerPoint.Slide slide = presentation.Slides.AddSlide(1, layout_video);

Nun sollte das Video in das dafür vorgesehene Shape eingesetzt werden. Leider habe ich festgestellt, dass

slide.Shapes[2]=slide2.Shapes.AddMediaObject2(@"E:\Programmierung\Office\PowerPointAddInn_FotoVideo\TestObjekte\IMG_0218.MOV", Office.MsoTriState.msoTrue, Office.MsoTriState.msoFalse, 55, 5, 50, 30);

keinen Setter sondern nur nen Getter hat.

Kann mir jemand sagen, wie ich trotzdem dieses Shape als Grundgerüst (Größe, Plazierung) für mein Video verwenden kann?

Grüße, Briquet

30.10.2012 - 14:37 Uhr

Ich brauchte das Aufnahmedatum und die Pixelgrößen von Bildern und Videos. Das habe ich mit GetItemOf() auslesen können und mit Herbivore's Tipp konnte ich auch die Steuerzeichen entfernen, die die Camera mit unter die Werte gemogelt hatte.

Die PropertyItem-Klasse werde ich mir aus Interesse aber trotzdem mal ansehen. Dann wird's das nächste mal nicht so umständlich 😃

Mein Problem ist gelöst. Ich danke Scavanger und Herbivore. Merci

29.10.2012 - 13:28 Uhr

Hallo Scavanger,
anfangs habe ich die FileInfo-Klasse verwendet, aber dort habe ich keine Attribute oder Methoden gefunden, die mir die erweiterten Dateiattribute, wie Aufnahmedatum, anzeigen. Das ist nämlich nicht das Gleiche wie das Attribut CreationTime, wie ich anfangs dachte.
Oder wäre das sogar doch mit der FileInfo-Klasse auslesbar?

28.10.2012 - 21:04 Uhr

Die Attribute einer Bilddatei (jpg) ausgelesen mit GetDetailsOf(item, 12) eines Shell32.Folders hat den Wert "14.07.2012 12:30". Allerdings nur wenn ich den Wert mit mit C# ausgebe. Mit einem Editor ist der Wert "?14.?07.?2012 ??12:30". Nun ist mein Problem den Wert in ein DateTime zu casten. Durch die Exception wird jedoch klar, das für die Laufzeitumgebung der Wert "?14.?07.?2012 ??12:30" ist. Ich habe probiert, den Wert mit Replace('?',' ') zu casten, aber das funktioniert nicht.
Hat jemand einen Erklärung warum für den Entwickler nur der Wert "14.07.2012 12:30" sichtbar ist, aber das System mit "?14.?07.?2012 ??12:30" rechnet bzw. kann mir jemand sagen wie ich den Wert von GetDetailsOf(item, 12) in ein DateTime casten kann ?

03.10.2012 - 13:13 Uhr

Hab meinen Fehler gerade selber gefunden. Und so funktioniert es:

media_code = new MediaElement();
media_code.Source = new Uri(@"E:/Fotos/ClubCooee/cooee-snapshot-2009-08-03-19-08-45-0206.png");
canvas.Children.Add(media_code);

BindingOperations.SetBinding(media_code, Canvas.LeftProperty,
							new Binding() { Source = media_code, Path = new PropertyPath("ActualWidth"), Converter = new BindingConverter_Position() });   
BindingOperations.SetBinding(media_code, Canvas.TopProperty, 
							new Binding() { Source = media_code, Path = new PropertyPath("ActualHeight"), Converter = new BindingConverter_Position() });  

TranslateTransform translation = new TranslateTransform();

TransformGroup transformationGroup = new TransformGroup();
transformationGroup.Children.Add(translation);
media_code.RenderTransform = transformationGroup;
			
DoubleAnimation translationX = new DoubleAnimation();
translationX.From = 0;
translationX.To = canvas.ActualWidth/2;
translationX.Duration = new Duration(TimeSpan.FromSeconds(2)); 
translation.BeginAnimation(TranslateTransform.XProperty, translationX);

DoubleAnimation translationY = new DoubleAnimation(0, canvas.ActualHeight / 2, new Duration(TimeSpan.FromSeconds(2)));
translation.BeginAnimation(TranslateTransform.YProperty, translationY);

DoubleAnimation increase = new DoubleAnimation(0.2 * canvas.ActualHeight, 0.8 * canvas.ActualHeight, new Duration(TimeSpan.FromSeconds(2)));
increase.Completed += new EventHandler(increase_Completed);
media_code.BeginAnimation(MediaElement.WidthProperty, increase);
01.10.2012 - 22:07 Uhr

Mein Problem ist, dass 2D-Controls ihr Koordinatenursprung links oben haben. Ich schildere mal kurz das Szenario:
Ein MediaElement (also dessen Bildmittelpunkt) soll von der linken oberen Ecke zum Mittelpunkt des Canvas fahren und dabei noch seine Größe vergrößern. Dafür nutze ich die DoubleAnimationen.

TranslateTransform translation = new TranslateTransform();
myMediaElement.RenderTransform = translation;  
translation.BeginAnimation(TranslateTransform.XProperty, new DoubleAnimation(0, canvas.ActualWidth / 2 - myMediaElement.ActualWidth / 2, new Duration(TimeSpan.FromSeconds(2))));
translation.BeginAnimation(TranslateTransform.YProperty, new DoubleAnimation(0, canvas.ActualHeigth / 2 - myMediaElement.ActualHeigth / 2, new Duration(TimeSpan.FromSeconds(2))));
myMediaElement.BeginAnimation(MediaElement.WidthProperty,new DoubleAnimation(0.2*canvas.ActualWidth, 0.6*canvas.ActualWidth, new Duration(TimeSpan.FromSeconds(2))));

Dem MediaElement gebe ich eine Breite. Die Höhe berechnet sich automatisch, damit das Verhältnis gleich bleicht. Allerdings ist damit auch die ActualHeight NaN und somit kann ich nicht damit rechnen. Wiederrum ändert sich durch die Animation "Größenänderung" auch immer die DependencyProperties. Dafür wollte ich nun einen Converter nutzen. Ich schrieb eine Klasse die IValueConverter implementiert. Und erstelle die Datenbindung mit:

BindingOperations.SetBinding(media_code, TranslateTransform.XProperty, // berechne von MediaElement die x-Position
                                        new Binding() { Source = media_code, Path = new PropertyPath("ActualWidth"), Converter = new BindingConverter_PositionX() });   // verwende vom MediaElement die aktuelle Breite

.
In meiner Convert-Methode kann ich aber nur auf das ActualWidth des MediaElements zugreifen, aber nicht auf den ursprünglichen XProperty-Wert um dann XProperty - value/2 zu sagen.

Wahrscheinlich denke ich auch zu kompliziert und meine Herangehensweise ist wirr. Aber die Aufgabe ist doch eigentlich ganz simple. Bloß die Lösung erscheint mir unerreichbar.

Kann mir jemand helfen?

29.09.2012 - 20:14 Uhr

Vielen Dank, werd ich mir gleich mal ansehen.

29.09.2012 - 10:29 Uhr

Ich möchte gern den aktuellen halben Wert eines Cavas der Position eines MediaElements zuordnen. Einen Änderung der SourceWerte ist doch aber nicht so einfach, oder? Ich wollte mir deswegen eine HilfsVariable erstellen, die die Berechnung beinhaltet. Diese hat dann aber wiederum nicht die Methode SetBinding. Jetzt weis ich aber leider nicht weiter. Vielleicht könnte man selbst ein DependencyProperty erstellen, aber da hören meine Kenntnisse leider auf.

double Eigenschaft;
       
Binding binding_canvas = new Binding();
binding_canvas.Source = canvas;
binding_canvas.Path = new PropertyPath("ActualHeight");            
Eigenschaft.SetBinding ?

Binding binding_media = new Binding();
binding_media.Source = ?
binding_media.Path = Eigenschaft;
media.SetBinding(Canvas.LeftProperty, binding_media);

Womit kann man so etwas lösen?

11.10.2011 - 07:40 Uhr

Als ich gestern ewig mit den Zellen gekämpft habe 😄, habe ich gemerkt, dass ich es gar nicht so genau brauche. Aber ich finde es sehr gut zu wissen, wie ich auf die einzelnen Zellen zugreifen kann um sie dann weiter zu verwenden.
Ich wollte eigentlich nur jedes Sheet als Slide darstellen. Ich dachte es geht nur, indem ich jedes Shape und auch die Tabellendaten einzeln ansprechen. Das mit den Shapes hat ja auch wunderbar geklappt. Bei den Tabellendaten sollte ebenfalls die Struktur erhalten bleiben. Über das Auslesen der einzelnen Zellen müsste ich mir allerdings in Powerpoint die Struktur nachbauen. Durch


worksheet.UsedRange.CopyPicture(
    Microsoft.Office.Interop.Excel.XlPictureAppearance.xlScreen, 
    Microsoft.Office.Interop.Excel.XlCopyPictureFormat.xlPicture);                 
pptSlide.Shapes.Paste();       

habe ich nun das Sheet als Bild in dem Slide. Der Zugriff auf die einzelnen Objekte ist damit zwar entfallen, aber momentan reicht es mir so.

Sebastian, ich danke dir für deine Hilfe. Jetzt bin ich in Excel etwas schlauer. Und du hattest Recht. Ich habe vorher noch nie was mit Excel versucht. Ich hatte es am Anfang über VB versucht, aber das ist nicht ganz meine Sprache 8)

10.10.2011 - 10:15 Uhr

Danke Sebastian für den guten Hinweis. Der Vollständigkeit wegen poste ich hier mal noch meinen jetzigen Quellcode:


public void Export_to_PowerPoint()
{
    PowerPoint.Application pptApplication = new PowerPoint.Application();
    pptApplication.Visible = Microsoft.Office.Core.MsoTriState.msoTrue;                     // PowerPointAnwendung öffnen
    PowerPoint.Presentation pptPresentation = 
        pptApplication.Presentations.Add(Microsoft.Office.Core.MsoTriState.msoCTrue);       // neue Präsentation erstellen
    
    Excel.Workbook wb = (Excel.Workbook)this.Application.ActiveWorkbook;                    // aktuell geöffnetes Workbook

    int folie_nr = 1;
    int anz_ws = wb.Worksheets.Count;                                                       // fyi
    foreach (Excel.Worksheet ws in wb.Worksheets)                                           // jedes Worksheet durchlaufen
    {
        Excel.Range range = ws.UsedRange;                                                   // Bereich festlegen, welcher einen Inhalt hat
        PowerPoint.Slide pptSlide =
           pptPresentation.Slides.Add(folie_nr, PowerPoint.PpSlideLayout.ppLayoutBlank);    // neue Folie der Präsentation hinzufügen
        folie_nr++;
          
        int anz_shapes = ws.Shapes.Count;                                                   // fyi
        foreach (Excel.Shape item in ws.Shapes)
        {                    
            Office.MsoAutoShapeType shapeType = item.AutoShapeType;                         // fyi, Typ des Shapes
            PowerPoint.Shape pptShape = pptSlide.Shapes.AddShape(item.AutoShapeType, item.Left, item.Top, item.Width, item.Height);                    
        } 
    }        
}

Allerdings hab ich gemerkt, dass Zellinhalte keine Objekte im Sinne von Shapes sind. Um diese ebenfalls zu übernehmen (mit/ohne Gitterlinien), welches Excel- und Powerpoint-Objekte benutzt man dazu?

07.10.2011 - 14:59 Uhr

Ich möchte gern ein Excel-Add-In schreiben, welchen aus jedem Excelsheet eine PowerPointfolie generiert.
Eventuell ist das auch nur möglich, wenn das Excelsheet als Bild in PowerPoint dargestellt wird. Ich hoffe aber, dass man jedes Element (Zelle, Diagramm, Bild, Shape) bestimmen kann und es an gleicher Stelle in eine PowerPoint-Folie exportiert.
Da ich noch nie ein Add-In für Office geschrieben habe, bin ich etwas hilflos.

Bis jetzt habe ich das erstellt. Aber beim Zugriff auf die einzelnen ExcelObjekte und dem Hinzufügen zu einer PowerPoint-Folie wusste ich nicht weiter.


using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Excel = Microsoft.Office.Interop.Excel;
...
public void Export_to_PowerPoint()
{
    PowerPoint.Application pptApplication = new PowerPoint.Application();
    pptApplication.Visible = Microsoft.Office.Core.MsoTriState.msoTrue;                     // PowerPointAnwendung öffnen
    PowerPoint.Presentation pptPresentation = 
        pptApplication.Presentations.Add(Microsoft.Office.Core.MsoTriState.msoCTrue);       // neue Präsentation erstellen
    
    Excel.Workbook wb = (Excel.Workbook)this.Application.ActiveWorkbook;                    // aktuell geöffnetes Workbook

    int anz_folien = 1;
    foreach (Excel.Worksheet ws in wb.Worksheets)                                           // jedes Worksheet durchlaufen
    {
        Excel.Range range = ws.UsedRange;                                                   // Bereich festlegen, welcher einen Inhalt hat
        PowerPoint.Slide pptSlide =
            pptPresentation.Slides.Add(anz_folien, PowerPoint.PpSlideLayout.ppLayoutBlank); // neue Folie der Präsentation hinzufügen
        anz_folien++;

        // foreach (Excel.OBJECT obj in range.OBJECTS)
        // {
        //      TYP IDENTIFIZIEREN
        //      NEUEN TYP IN POWERPOINT ANLEGEN
        //      EXCELOBJECT DEM NEUEN OBJEKT HINZUFÜGEN
        //      POWERPOINT OBJEKT ZU SLIDE HINZUFÜGEN
        // }
    }
}

Ich hoffe, dass jemand mir beim Implementieren des kommentierten Teils einen Tip geben kann. Vielleicht ist meine Herangehensweise auch ganz falsch. Ich habe leider nichts hilfreiches im Web gefunden. Aber falls auch da jemand einen Link hat wäre ich froh.

Lieben Dank schon mal.

18.08.2010 - 09:16 Uhr

hey, super, danke 😁

17.08.2010 - 16:04 Uhr

Warscheinlich ist das auch ganz simple, aber ich habs nicht so mit den WPF-Controls.
Ich möchte einfach nur den Doppelklick auf eine Row abfangen. Da ich aber mit Datenbindung arbeite, kann ich nur den Doppelklick auf das gesamte DataGrid abfangen:

 <wpf:DataGrid Name="dg_attachs"
         ItemsSource="{Binding}"
         MouseDoubleClick="attachs_MouseDoubleClick"  />
private void attachs_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
     string clickedCell = ((Microsoft.Windows.Controls.DataGrid)sender).SelectedCells.ToString();
}

Aber da kann ich ja erst eine Zelle markieren und dann auf den Header nen Doppelklick aufführen. Das möchte ich aber nicht. Ich will direkt das Event der doppeltgeklickten Zelle.

Kann mir da bitte jemand nen Tipp geben.

07.06.2010 - 09:52 Uhr

Bin bald am verzweifeln, was stimmt denn mit meiner ComboBoxBindung nicht ?(
Ich habe nochmal ein neues Beispiel erstellt. Dabei habe ich eine Datenqelle für meine Anzeigedaten (dt1) und eine für meine LookupTable(dt2). Die lasse ich mir jeweils in einem Control anzeigen. Also dt1 in deinem DataGrid und dt2 in einer Combobox. Die beiden Datenquellen haben einen gemeinsamen Schlüssel, dt1.EmployeeID=dt2.ID. Das heißt, dass mit dem im DataGrid gewählte Element soll mit dem assozierten Element über den gemeinsamen Schlüssel in der ComboBox angezeigt werden.
Tut es aber nicht 🙁
Kann mir jemand einen Typ geben, wo mein Fehler liegt?
Mein Quelltext sieht folgender Maßen aus:

<wpf:DataGrid Name="dg" 
                      ItemsSource="{Binding}"
                      IsSynchronizedWithCurrentItem="True"
                      CanUserAddRows="False" 
                      CanUserDeleteRows="False" />
        <ComboBox Name="cb"
                  IsSynchronizedWithCurrentItem="True"
                  Width="200"
                  ItemsSource="{Binding}"
                  SelectedValuePath="ID"
                  DisplayMemberPath="Name" 
                  SelectedIndex="{Binding EmployeeID}"/>
        <Label Content="{Binding EmployeeID}"/>
public partial class Window3 : Window
{
        DataTable dt1;
        DataTable dt2;

        public Window3()
        {
            InitializeComponent();

            QueryExecuter myDB = new QueryExecuter(".", "Northwind"); // gekapselte Datenbankverbindung
            
            dt1 = myDB.execDTQuery("SELECT EmployeeID, FirstName, LastName, Title, HireDate, Photo FROM Employees"); // liefert Datenquelle 1
            this.DataContext = dt1;

            dt2 = myDB.execDTQuery("SELECT ID, Name FROM TestTable"); // liefert Datenquelle 2
            cb.DataContext = dt2;
         }
}

Das Label ist nur zum Testen ob die Datenbindung überhaupt funktioniert. Und da geht es.
?(Wo liegt nur mein Fehler ?(

28.05.2010 - 12:03 Uhr

Ich habe 2 Teile. Auf der einen Seite ein DataGrid welchen Daten aus einer Datenbank bekommt. Auf der anderen Seite eine Art Formular, welches die Daten des gewählten DataGridEintrages anzeigt. In dem Formular befindet sich eine Combobox, die ihre Daten wiederrum aus deiner Datenbank (audere Quelle als die Daten fürs DataGrid) gezieht.
Nun soll aber der ausgewählte Comboboxeintrag eines Elements der ausgewählten DataGridZeile entsprechen. Ich habe keine Ahnung, wie ich das realisieren könnte.
Das klingt jetzt etwas undruchsichtig, ich versuche es mal an meinem Beispiel zu beschreiben:

DataGrid
XAML:

<wpf:DataGrid Name="dg_overview_tickets" ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True"/>

C#:

DataContext = dt_ticket; // ist das DataTable welches mit Daten aus einer DB gefüllt wurden

ComboBox
XAML:

<ComboBox Name="cb_kunde" ItemsSource="{Binding}"/>

C#:

cb_kunde.DataContext = dt_kunden ;// ist das DataTable welches mit Daten aus einer anderen DB gefüllt wurden
            cb_kunde.DisplayMemberPath = "Name";
            cb_kunde.SelectedValuePath = "ID";

Die gewählte DataGridZeile enthält in Spalte 2 einen Int-Wert, dieser soll in der ComboBox ausgewählt werden. Der Int-Wert entspricht der ID.

Ich habe ja die Itemsource jeweils schon an die Daten der Datenbank gebunden. Aber wie verbinde ich jetzt noch die DataGridAuswahl mit der ComboboxAuswahl, obwohl sie unterschiedliche Quellen haben ?
Gedachte hatte ich mir SelectedValue="{Binding kundenID} für die ComboBox, aber kundenID ist ja nur in der anderen Datenquelle enthalten.

28.10.2009 - 09:38 Uhr

Hmm, klingt logisch.
Problem gelöst, danke euch!
😁

28.10.2009 - 09:01 Uhr

Das hatte ich auch schon probiert, aber da krieg ich {252,98,43,101,114} raus und nicht {0xFC, 0x62, 0x26, 0x65, 0x72}.

28.10.2009 - 08:40 Uhr

Bin etwas verzweifelt. Ich muss Strings in ISO8859-1 Zeichen verschlüsseln.
Andersrum, mit:

System.Text.Encoding.GetEncoding("iso-8859-1").GetString(new Byte[]{0xFC, 0x62, 0x26, 0x65, 0x72});

kriege ich ja das Wort "üb+er" raus. Aber der String soll meine Eingabe sein und als Ausgabe brauche ich das Bytearray.
Kann mir da jemand helfen? Ich hab so die Vermutung, dass das ganz einfach geht. Aber ich seh den Wald vor lauter Bäumen nicht X(

20.10.2009 - 11:46 Uhr

okay, danke schön

20.10.2009 - 11:14 Uhr

Ich hab nen hellblauen Hintergrund und ne Groupbox mit rotem Rahmen. Aber wo das weiß um den Rahmen herkommt, kann ich mir einfach nicht erklären.


<Window x:Class="WpfApplication1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1"
        Background="LightBlue">    
    <DockPanel LastChildFill="True"
               Margin="10">
        <GroupBox Header="Referenzen"
                  DockPanel.Dock="Top" 
                  BorderThickness="3"
                  BorderBrush="Red"
                  Margin="0"
                  Padding="0">
            <Label Content="Label"/>
        </GroupBox>
    </DockPanel>
</Window>

20.10.2009 - 10:08 Uhr

Ich hab in einem Windows eine Groupbox. Sobald ich den Hintergrund des Windows farbig gestalte ist um die Groupbox ein weißer unschöner Rand (innen und aussen um den Border) zu sehen. Mit Padding und Margin kriege ich das nicht weg.
Hat schon jemand mal dieses Problem gehabt und auch gelöst?

19.10.2009 - 07:06 Uhr

Du meinst das UserControl in ein Project und die Testanwendung in ein anderes innerhalb der gleichen Solution? Ich denk mal, so werd ich das jetzt auch machen.

16.10.2009 - 17:11 Uhr

ah, gut dann geht es. danke meisteralex

aber eventuell brauch ich die testanwendungung (app) doch noch. also hab ich die nur vom projekt ausgeschlossen und dann einfach mal wieder reingezogen. Wahrscheinllich hat sich VS irgendwelche noticen dazu gemach, aufjedenfall geht das nicht so einfach. @meisteralex: Hast du da noch eine idee dazu? ansonsten speicher ich mir schnell die dll und mach dann die aktion mit dem ausschliessen wieder rückgängig. ist zwar nicht die beste methode, aber wahrscheinlich die einfachste.

16.10.2009 - 16:44 Uhr

Ich habe ein Projekt als WPF-Anwendung angelegt und in diesem Projekt noch ein WPF-Usercontrol dazu. Das Usercontrol will ich als dll ausgeben, sobald es fertig geschrieben ist.
Die WPF-Anwendung mit in diesem Projekt soll nur mein Usercontroll testen. Da jetzt mein Usercontrol fertig und auch getestet ist, wollte ich den OutputType: von WindowsApplication auf ClassLibary setzen und bekommen dort folgende Fehlermeldung:

"Library project file cannot specify ApplicationDefinition element."

Ich dächte das ich meine vorherigen Projekte auf ähnliche Weise erstellt habe ohne das ein Fehler kam.
Kann mir jemand was dazu sagen?

17.09.2009 - 11:04 Uhr

Hier gibt es übrigens auch eine schöne Chart-dll für nicht-kommerzielle Benutzung:
Download Silverlight Charting Components - Dot Net Charts

14.09.2009 - 12:52 Uhr

Super. Danke!

14.09.2009 - 12:37 Uhr

Danke für die schnelle Antwort. Wenn ich die Outlook-dll verwende, ist aber mein Problem mit dem html-Text für den Body noch nicht nicht gelöst. Hast du noch eine Idee dazu?

14.09.2009 - 09:08 Uhr

Ich möchte eine für den Versand vorbereitete OutlookMail in einem C#-Programm aufrufen. Das würde ich so machen:

ProcessStartInfo p = new ProcessStartInfo();
p.FileName = "mailto:" + emailAdresse + "&body=" + "irgendwelcherText";

Ich habe versucht den Text (Codebeispiel: irgendwelcherText) in html anzugeben, weil ich Tabellen und Bilder einbinden will. Nur wird der HTML-Code auch genauso in der Mail dargestellt. Gibt es eine Möglichkeit zu sagen, dass der Text von body html-text ist und noch interpretiert werden muss?

Mein zweites Problem: Ich würde gern noch zwei pdf's mit anhängen. Das geht sicherlich genauso mit &Parameter=pfad. Aber wie heißt das Parameter?

Ich danke Euch für Antworten.

02.07.2009 - 08:49 Uhr

Bin erst jetzt wieder zu diesem Projekt gekommen.
Danke pdelvo! 👍

04.06.2009 - 16:36 Uhr

Ich möchte in meiner Anwendung eine externe Anwendung öffenen. Dazu verwende ich System.Diagnostics.Process.Start([datei],[Aufrufparameter]). Das funktioniert auch prima. Nun habe ich das Problem das die Anwendung eine gepublishete C#-Anwendung ist, dessen Speicherort von Nutzer zu Nutzer unterschiedlich (was cryptisches) ist und auch immer in 2 Varianten (die aktuelle und die vorletzte Version) vorhanden ist.
Gibt es den sowas wie die Windowssuchversion. Das heißt ich gebe einen Oberpfad und die zu startende Datei an und bekomme einen Pfad mit der aktuellsten Version zurück???

Ich hoffe, das irgendjemand schonmal was ähnliches benötigt hat und mir seine Lösung berichten kann.

12.02.2009 - 12:08 Uhr

Ach ja. Funktioniert prima. Danke schön.
Das einzige Problem was ich jetzt noch habe, ist das meine manuellen Zeilenubrüche auch ignoriert werden. Ich wollte Zeilenumbrüche nur an bestimmten Stellen, aber wahrscheinlich wird es dafür keine Realisierung geben.

12.02.2009 - 11:08 Uhr

das hab ich schon mit:

dgv.DefaultCellStyle.WrapMode = DataGridViewTriState.False; //dgv ist mein DataGridView

versucht, aber das trifft wahrscheinlich nur auf den Zelleninhalt zu. In den Headern wird der Text immernoch umgebrochen

12.02.2009 - 10:26 Uhr

Der Text in RowHeader und ColumnHeader werden umgebrochen sobald der String ein Leerzeichen enthält.
Kann ich das irgendwie verhindern? Wenn der gesamte Text nicht in den Header paßt wäre das in meinem Anwenderfall nicht schlimm.