Laden...

Forenbeiträge von Christoph1972 Ingesamt 212 Beiträge

24.11.2015 - 17:00 Uhr

Vielen Dank erstmal an alle für die Unterstützung. Es kommt jetzt eine neue Office Version, damit ist das Problem für die nächste Zeit behoben.

@Alf
Eigentlich wollte ich die neue Version mit NetOffice machen. Verstehe ich dich richtig, Images einfügen geht damit nicht? Das wäre ungünstig und Aspose ist leider sehr teuer. Nun gut, wenn eine Neuauflage ansteht, muss noch mal eine neue Betrachtung erfolgen, vielleicht gibt es bis dahin weitere Möglichkeiten.

24.11.2015 - 06:53 Uhr

Eine Überarbeitung kommt eigentlich nicht in Frage.

Dennoch hätte ich das Projekt gerne wieder in einem wartbarem Zustand.
Das wiederspricht sich.

Wenn es eine Möglichkeit geben würde Version 15 auf die Ziel Rechner zu bekommen, oder ein Verweis auf eine ältere Version in VS zu setzen dann nicht.

Das ist aber typisch in der SW Entwicklung, je weniger Zeit man vorher auf die Architektur verwendet, je mehr Zeit muss man nachher für die Pflege investieren.

Gab es 2007/2008 andere Möglichkeiten? Die Tools mussten und müssen in der Lage sein Images in Word und Excel zu kopieren, an/in bestimmte Bereiche, da habe ich damals keine andere Lösung gefunden.

Wenn das jetzt schon ein grosser aufwand ist es zu refactorieren, wird das nie besser.

Das bringt schon alleine die Komplexität der Anforderung mit sich.

Du musst entscheiden welchen Tod du sterben möchtest, jetzt arbeit reinstecken das es geht, oder es eben tot lassen.

Es soll/muss noch einige Jahre wartbar sein. Ich möchte nicht mehr soviel Arbeit in ein altes Projekt stecken. Wenn, dann möchte eine komplette Überarbeitung, zu einem geeigneten Zeitpunkt. Den Tot jetzt zu sterben ist mangels Kapazitäten nicht möglich. Zur not muss der Auftraggeber Office 2013 besorgen, was natürlich nicht schön wäre.

Ja ja, immer diese Abhängigkeiten, die holen ein früher oder später immer ein....

Weitere produktive Vorschläge nehme ich gerne entgegen!

23.11.2015 - 22:13 Uhr

Office ist doch mittlerweile(erst 2016, oder doch schon früher?) ein InPlace-Update; es können also keine zwei verschiedene Versionen installiert sein.

Ja, es sieht momentan danach aus. Aber wie kann man so alte Projekte betreuen? Ich bin aktuell nicht in der Lage eine lauffähige Version aus zuliefern und das ist mal übel....

Eine Überarbeitung kommt eigentlich nicht in Frage. Das Projekt ist von 2008 und soll eigentlich so bleiben wie es ist. Dennoch hätte ich das Projekt gerne wieder in einem wartbarem Zustand.

23.11.2015 - 21:53 Uhr

Hallo,

vielen Dank für die Info! NetOffice werde ich mir bei dem nächsten Projekt definitiv vornehmen. Jetzt möchte ich das Programm nur wieder zum laufen bekommen. Es sollte eigentlich nur etwas ganz kleines an dem Programm angepasst werden und jetzt so etwas. Irgendwie muss es doch die Möglichkeit geben auf eine ältere Version zu verweisen, oder?

23.11.2015 - 18:04 Uhr

Hallo Leute,

ich habe ein Problem mit einer Anwendung von mir, die Word- und Excel-Dokumente mittels Interop erstellt.

Auf meinem Rechner wurde im Sommer Office 2013 installiert. Wenn ich in dem betroffenen Projekt auf die Eigenschaften für den Verweis Microsoft.Office.Core gehe, bekomme ich die Version 15 angezeigt. Nun ist es so, dass es bei Rechnern mit Office 2010 zu einer FileNotFoundException kommt, da Version 15 nicht vorhanden ist.

Meine Idee war, dass ich den aktuellen Verweis lösche und einfach eine ältere Version auswähle. Mir wird noch Version 14 angeboten, nur damit ist es so, dass dann etliche Methoden ungültige Argumente haben, das Ganze scheint nicht ohne weiteres abwärtskompatibel.

Was gibt es für Möglichkeiten, das mein Programm wieder auf Rechnern mit Office 2010 läuft?

Office 2013 nachinstallieren, geht vom Lizenzmanagement momentan nicht, und schon gar nicht auf die Schnelle. Schade, das wäre eine einfache Lösung.

Das Programm wurde auf FW 4.0 umgestellt, damit besteht die Möglichkeit Embeded Interop Types zu verwenden. Aber das ist sicher mit einer erheblichen Nacharbeit verbunden. Lieber nicht…..

Auf Version 14 umstellen und sämtliche Methoden überarbeiten, ohne zu wissen ob Version 14 auf den Zielrechnern vorhanden ist. Lieber nicht…..

Habt ihr sonst noch Ideen, wie ich mein Programm wieder zum Laufen bekomme?

06.10.2015 - 16:30 Uhr

Es wäre aber wahrscheinlich besser, aus der genaueren Beschreibung dieses neuen Problems auch einen neuen Thread zu machen, oder doch nicht?

Unbedingt 😉

Das mit dem Konstruktor handle ich immer so:


if (LicenseManager.UsageMode != LicenseUsageMode.Designtime)
{
  //do something.....
}

Es ist doch immer wieder interessant wieviele Möglichkeiten es gibt.

31.08.2015 - 06:43 Uhr

Triggerst du da etwa?

warum schreibst du:


<Setter Property="CanUserAddRows" Value="True"/>

statt:


<DataGrid CanUserAddRows=True />

Kannst du nach dem Einfügen eines neuen Datensatz, vorhandene Daten bearbeiten, oder ist auch das nicht möglich?

18.08.2015 - 18:36 Uhr

Hallo zusammen,

das Problem ist gelöst. Vielen Dank für eure Unterstützung! 👍

Es scheint so das die meißten - ich nennne sie mal - ContentControls (Border,ContentControl,Grid,Canvas usw.) kein Drop zulassen wenn sie kein Content haben.

Ich habe mir jetzt so geholfen:


<Border  BorderBrush="Silver" BorderThickness="1"  Name="MyBorder" AllowDrop="True" DragEnter="MyBorder_DragEnter" DragOver="MyBorder_DragOver" Drop="MyBorder_Drop" >
    <Grid >
        <TextBlock Background="Azure" ></TextBlock><!--Hilfts-Control, sonst bleibt der Border nicht Dropfähig, wenn das folgende Control Visibility.Hidden ist!-->
        <TextBlock Text="{Binding Path=DraggedContact.Name}" Background="Red" Visibility="{Binding Path=DraggedContact, Converter={StaticResource ResourceKey=MyVisibleConverter}}"></TextBlock>
    </Grid>
</Border>

So ist immer ein Control zum Drop verfügbar.

17.08.2015 - 21:53 Uhr

Vielen Dank für deine Anregungen! Aber sobald der Content Hidden ist, geht kein Drop mehr. Vielleicht bin ich auch einfach zu blöd.......

So, erst mal eine Nacht drüber schlafen, und wenn das nicht Hilft, dann gibt es morgen eben eine Codebehind Lösung 🙂

17.08.2015 - 19:19 Uhr

Hi,

DragEnter kommt bei dem Border, immer. Nur das Drop geht nicht wenn der Content unsichtbar ist. Der TextBlock dient nur als Beispiel, in meiner Anwendung ist es ein "komplexes" UserControl, aber das Verhalten ist identisch.

Im CodeBehind könnte man das ja mittels Panel.Children.Add - .Remove lösen, aber das geht auch sicher irgendwie ohne.....

17.08.2015 - 18:13 Uhr

Hallo Leute,

mir fehlt gerade eine zündende Idee. Und zwar habe ich ein Border, dessen Content soll nur angezeigt werden, wenn der DataContext Daten hat. Die Daten sollen mittels Drag & Drop zugeführt werden. Meine Idee war nun, die Eigenschaft Visibility des Contents über einen ValueConverter zu steuern. Nun ist es leider so, das bei Visibility.Hidden kein Drop mehr möglich ist.

Exemplarisch sieht das etwa so aus:


<Border DragEnter="border1_DragEnter" AllowDrop="True"  BorderBrush="Silver" BorderThickness="1" Grid.Column="1" Height="100" HorizontalAlignment="Left"  Name="border1" VerticalAlignment="Top" Width="200" >
    <TextBlock Background="AliceBlue" Visibility="{Binding Path=Name, Converter={StaticResource ResourceKey=MyConverter} }" Drop="TextBlock_Drop"></TextBlock>
</Border>


public class VisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return (value.ToString() == "0") ? Visibility.Visible : Visibility.Hidden;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return null;
    }
}

Ich habe schon verschiedenste Verschachtelungen versucht, leider ohne Erfolg.

Hat vielleicht jemand eine Idee, wie ich das realisieren kann? Ich vermute das eine völlig andere Lösung her muss, oder?

Über eure Unterstützung freue ich mich wie immer sehr!

14.07.2015 - 06:32 Uhr

Hallo,

vielleicht findest du hier eine Erklärung: Klick

22.06.2015 - 20:38 Uhr

Hi,

der Code ist nicht von mir (deswegen habe ich ihn auch wieder entfernt) , ich darf ihn nur nutzen, ist quasi wie eine externe DLL für mein Projekt. Daher keine Testumgebung oder Unittest oder sonstiges. F12 gibt es im WebBrowser Control nicht. Das Debugging habe ich anhand dieser Anleitung versucht, leider springt der Debugger nicht darauf an, gut möglich das ich zu blöd bin. Und wie gesagt die Webseite läuft in allen Browsern ohne probleme, eben nur nicht im WebBrowser Control.

Aber wenn du dir so sicher bist dass das alles kein Problem ist, dann darfst du mir gerne helfen, ich würde mich jedenfalls riesig freuen! Aber ehrlich gesagt glaube ich nicht das du das drauf hast, dafür braucht es schon richtige Könner 👅

[EDIT]

So, ich war kurz 10Km laufen und habe das ganze noch mal überdacht. Hiermit ziehe ich meine Bitte um Hilfe zurück! Und zwar gefällt mir die Lösung mit Third Party Equipment nun doch besser als gedacht, da meine Anwendung so vor ungewollten Updates geschützt ist. Das wäre bei dem WebBrowser nicht der Fall, da der ja immer auf die aktuelle IE Version aufsetzt. So habe ich eine Lösung die auch noch in 10 Jahren läuft.

Also Leute, vielen Dank für die Unterstützung!

LG
Christoph

22.06.2015 - 17:00 Uhr

Sorry, aber ich kenne mich mit Webprogrammierung nicht aus und war mit meinem Latein am Ende. Ich habe mich Stundenlang mit dem Problem beschäftigt, es ist also nicht so, das andere meine Arbeit machen sollen. Ich habe mir nur Unterstützung von jemanden erhofft, der sich gut mit Javascript und idealer weise mit dem WebBroswer auskennt. Wer das Projekt nicht hat, kann mir auch nicht helfen, ganz einfach. Eine Reduzierung wäre nicht möglich gewesen, da es ein Javascript Programm und ein WPF Projekt mit einem Einzeiler war, mehr nicht. Es waren übrigens auch nur 560Kb und keine 20MB. Von daher finde ich meinen Thread nicht wirklich unangemessen.

Na ja, trotzdem vielen Dank für deine kompetente Hilfe!

LG
Christoph

22.06.2015 - 06:47 Uhr

Danke für eure Rückmeldungen. Also die Fehlermeldung sagt - das slice null ist, das habe ich einfach mal geglaubt. (Ich habe es nicht hinbekommen den Javascript code zu debuggen.) Ich bin davon ausgegangen, das es sich um einen Bug in dem WebBrowser Control handelt, da die Seite ja grundsätzlich funktioniert. Deshalb habe ich das Control ausgetauscht und nun läuft alles. Ich bin davon ausgegangen, das mir niemand ohne das Projekt helfen kann, daher habe ich es angehängt. Kleiner ging es nicht, die größe macht das WebProjek, ist quasi ein Einzeiler (Webrowser.Navigate(..)). Und was sind heute schon 20mb?

21.06.2015 - 19:45 Uhr

Hi,

ich denke ohne das gesamte Projekt hätte mir niemand helfen können.


chem.file.partitionLine = function (/*string*/ str, /*array of int*/ parts, /*bool*/ withspace)
{
	var res = [];
	for (var i = 0, shift = 0; i < parts.length; ++i)
	{
		res.push(str.slice(shift, shift + parts[i]));
		if (withspace)
			shift++;
		shift += parts[i];
	}
	return res;
};

slice ist laut der Fehlermeldung null. Wenn dir was dazu einfällt würde ich mich sehr freuen, eine Lösung "out of the box" würde ich immer vorziehen.

LG
Christoph

21.06.2015 - 09:51 Uhr

So, das Problem ist soweit gelöst. Ich verwende nun nicht mehr das standard WebBrowser Control. Ich habe mir das von http://www.awesomium.com/ besorgt und nun läuft alles so wie ich mir das vorgestellt habe.

Vielen Dank für eure Unterstützung!

19.06.2015 - 17:08 Uhr

Hallo,

vielen Dank für deine Unterstützung! Leider wird die Seite nach wie vor nicht angezeigt. Aus irgendeinem Grund wird das Script nicht ausgeführt. Irgend wie müssen sich der IE vom WebBrowser und der IE unterscheiden, sonst würde es ja laufen.

Gibt es sonst noch Ideen und Anregungen? Wäre wirklich toll wenn ich das irgendwie ans laufen bekomme.

19.06.2015 - 06:42 Uhr

Hallo zusammen!

Ich habe ein HTML-Dokument, dieses möchte ich in einem WebBrowser Steuerelement in meiner Anwendung anzeigen. Leide bekomme ich einen Javascript Fehler und die Seite wird nicht angezeigt. "ScriptErrorsSuppressed = true" behebt das Problem nicht, das unterdrückt nur die Fehlermeldung, das Script wird nicht weiter ausgeführt. Das HTML-Dokument ist jedenfalls soweit ok, wenn ich es direckt mit FireFox oder dem Internet Explorer öffne funktioniert es. Was ist denn bitte an dem WebBroser Control anders? Die Internet Explorer Version vom WebBrowser Control ist 9.0, daran sollte es schon mal nicht liegen.

Hat vielleicht jemand Lust sich das Projekt mal anzuschauen? Das würde ich wirklich super finden! Liegt es eventuell an der URI, wie die zusammengesetzt wird? Das HTML Dokument wird Lokal aufgerufen, ein Web Server kommt nicht zu Einsatz, dehalb befindet sich das gesamte HTML Projekt mit in meinem Projektordner.

Leider ist das Web Programm insgesamt so groß, das ich es nicht direckt anhängen kann. gelöscht

Das betreffende Dokument ist ketcher-example.html

Über eurer Unterstüzung würde ich mich wie immer sehr freuen!

LG
Christoph

29.05.2015 - 23:31 Uhr

Ich denke das geht in deine Richtung: Click

Du musst halt schauen, das Du das an die Eigenschaft CellIsEditing knüpfst.

29.05.2015 - 19:33 Uhr

Wie geil ist das denn!! Da wäre ich im Leben nicht drauf gekommen! Asche auf mein Haupt, ich dachte die ganze Zeit es liegt an meinem XAML und habe kein Blick in die Library geworefen 🤔

Vielen Dank für deine Hilfe! Wirklich super von dir! 👍

29.05.2015 - 18:20 Uhr

Hallo Leute,

ich möchte in einer gruppierten ListView - mit einem Expander als ControlTemplate - Columns definieren, die in der Breite dynamisch sind. Das klappt dank dieser schönen Library sehr gut. Die Angelegenheit hat bisher nur einen Schönheitsfehler, den ich nicht in den Griff bekomme. Und zwar schiebt sich das ListViewItem unter die vertikale Scrollbar, ein Teil des Item wird also von der Scrollbar verdeckt.

Ich möchte erreichen dass das ListViewItem immer ganz in die ListView passt, ohne horizontale Scrollbar.

Die Scrollbar erscheint aber trotz ScrollViewer.HorizontalScrollBarVisibility="Disabled"

Hat zufällig jemand Lust mal einen Versuch zu unternehmen? Ich bin echt am Ende und habe keine Idee mehr. Gut möglich das es sehr simpel ist und ich einfach nicht auf die Lösung komme, aber dem muss ich mich jetzt stellen. 😃

Im Anhang befindet sich ein Beispielprojekt. EDIT-> scheinbar geht immer nur ein Dateianhang, Daher nur das Projekt.

Hier noch etwas XAML von der ListView:


<Grid>
        <ListView  ScrollViewer.HorizontalScrollBarVisibility="Disabled" ctrl:ListViewLayoutManager.Enabled="True" Name="listViewFiles"  ItemsSource="{Binding Path=FileList}" >
            <ListView.View>
                <GridView>
                    <GridViewColumn  >
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox IsChecked="{Binding UseForDatabaseImport}"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn ctrl:FixedColumn.Width="40" >
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Background="Beige" Text="{Binding SName}"></TextBlock>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn ctrl:ProportionalColumn.Width="3" DisplayMemberBinding="{Binding BName}" />
                    <GridViewColumn ctrl:ProportionalColumn.Width="1"  DisplayMemberBinding="{Binding Nuclear}" />
                </GridView>
            </ListView.View>

            <ListView.GroupStyle>
                <GroupStyle>
                    <GroupStyle.ContainerStyle>
                        <Style TargetType="{x:Type GroupItem}">
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate>
                                        <Expander Margin="5,5,5,5" IsExpanded="True" BorderBrush="Black"  Background="AliceBlue" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" >
                                            <Expander.Header>
                                                <StackPanel Orientation="Horizontal">
                                                    <!--Hier muss an Name gebunden werden! Der Name "Name" wird durch WPF erzeugt und kennzeichnet den Header!-->
                                                    <TextBlock Name="TestName" Text="{Binding Name}" Foreground="Black" FontSize="18" VerticalAlignment="Bottom" />
                                                </StackPanel>
                                            </Expander.Header>
                                            <ItemsPresenter />
                                        </Expander>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </GroupStyle.ContainerStyle>
                </GroupStyle>
            </ListView.GroupStyle>
        </ListView>
    </Grid>

26.05.2015 - 20:58 Uhr

Das Teil scheint soweit perfekt! Wird gleich morgen verbaut. Ich habe aktuell das Problem, das sich die Columns nach rechts aus dem Bild schieben. Das hat sich somit erledigt.

26.05.2015 - 20:20 Uhr

Irgendwie ist das mit der Width von den GridViewColumns tricky. Vielleicht macht dich das hier glücklich: http://www.codeproject.com/Articles/25058/ListView-Layout-Manager

Ich habe es noch nicht ausprobiert, kommt aber gleich 😃

23.05.2015 - 23:19 Uhr

Hi,


var con = new ImageSourceConverter();
ImageSource Source =(ImageSource)con.ConvertFrom(DeinBitmap);


23.04.2015 - 20:44 Uhr

Also, wenn ich mir deine Zkizze anschaue, würde ich meinen das du einfach ein fertiges ChratControl verwenden kannst. Zedgraph (WinForms) oder Oxyplot (WPF) würde sich da anbieten. Ich habe sehr gute Erfahrungen mit Zedgraph gemacht, das ist meist das Mittel meiner Wahl.

23.03.2015 - 18:24 Uhr

Sobald der Scanner im COM-Port-Modus läuft, kann man ihn natürlich nicht mehr als Tastaturersatz nutzen, sprich ein Einfügen in Excel wäre beispielsweise nicht mehr möglich.

Das geht schon noch, man muss den String nur via SendKeys weiterleiten. Diese Anforderung hatte ich vor kurzem.

20.03.2015 - 06:31 Uhr

Du könntest den Sacanner an einer RS232 Schnittstelle anschließen, dann hättest du volle kontrolle über das gesannte. Daten die in dein Muster passen kannst du dann via SendKeys weiterleiten.

19.03.2015 - 20:33 Uhr

Hi,

wenn ich dich richtig verstanden habe, könnte das hier das richtige für dich sein!?

17.03.2015 - 06:57 Uhr

Hi,

mit LostFocus im XAML läuft es jetzt.

 <TextBox Text="{Binding Path=MyValue, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"  />

Der String der via SendKeys eingeht, kommt sogar mit TAB, so das die TextBox den Focus verliert, optimal.

Jede Veränderung wird auch nicht gespeichert, das ist nur bei zwei Werten der Fall, diese dürfen nicht wegkommen, die wurden aufwändig durch Handarbeit generiert.

Vielen Dank für die Unterstützung!

13.03.2015 - 18:34 Uhr

Hallo Leute,

ich habe eine TextBox, diese ist an einen Element aus einem DataContext gebunden:


 <TextBox Text="{Binding Path=MyValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  />

Nun möchte ich, wenn ein Wert in diese eingegeben wird, das dieser sofort in der Datenbank gespeichert wird und zwar automatisch. Das soll nicht dem User überlassen werden!

Gibt es da eine Möglichkeit die das sicherstellt?

Ich habe das aktuell wie folgt gelöst und das funktioniert leider sporadisch nicht, es kommt immer wieder vor das Änderungen nicht übernommen werden.

Leider nur exemplarisch


 CPEntities MyContext = new CPEntities();

 void Test()
 {
     //Das soll jetzt z.B. ein SelectedItem sein, an dem etwas via TextBox geändert wird.
     Sequences sec = new Sequences();
     sec.PropertyChanged += new PropertyChangedEventHandler(sec_PropertyChanged);
 }

 void sec_PropertyChanged(object sender, PropertyChangedEventArgs e)
 {
    MyContext.SaveChanges();
 }

Leider funktioniert das sporadisch nicht und ich verstehe nicht warum? Eine Besonderheit gibt es, die Änderung erfolgt via SendKeys, kann es sein das mich da etwas foppt? Aber warum passiert das dann nicht immer?

Hat hier jemand eine Idee wie ich das eleganter lösen kann, oder kann mir jemand erklären was da los ist?

06.03.2015 - 06:52 Uhr

UserControls sind doch wahrscheinlich nicht dafür geeignet, da die Inhalte der großen Einzelansicht eines Rechtecks dynamisch sein soll.

Hi,

also ich finde ein UserControl ist sehr gut geeignet. Ich habe bei einem Projekt eine ListView verwendet und dessen DataTemplate war ein Expander und der Content vom Expander ein UserControl mit weiteren Controls zur Bearbeitung der gebundenen Daten. Der Expander ist entsprechend dynamisch und schiebt andere Items der ListView einfach an die Seite. Andere Items unsichtbar machen ist aber sicher auch problemlos möglich. Die Möglichkeiten sind dank WPF quasi unbegrenzt.

So sieht das aus:

28.02.2015 - 10:37 Uhr

Ich begrüße die Änderungen sehr! Damit haben die Admins auch die Option ein Topic in das Grundlagenforum zu verschieben, satt es zu schließen. Hier haben dann Anfänger die Möglichkeit, Anfängern zu helfen und ihr Wissen dabei zu stärken, nach dem Moto "von einander lernen". Das Grundlagenform muss man ja nicht lesen, wenn man sich durch Anfänger belästigt fühlt. Klar, es wird zwangsläufig darauf hinauslaufen, das immer wieder die selben Fragen auftauchen (Google wird leider gerne vergessen) , das lässt sich scheinbar kaum vermeiden. Auch das gnadenlose schließen der Topics konnte das nicht ändern. Das hatte nur zur Folge, das die Leute nicht mehr wieder kommen oder nur noch als stille Leser da sind. Genau aus diesem Grund war ich hier über Jahre nur stiller Mitleser. Wenn ich Fragen hatte, habe ich mich immer in anderen Foren bewegt, da ich das gnadenlose schließen von Topics immer äußerst unhöflich und abgehoben fand.

Ich denke mit den Änderungen kann diese Community tatsächlich "gemeinsam mehr erreichen" und myCSharp.de wird vielleicht für viele User tatsächlich "my"CSharp 🙂

25.02.2015 - 20:27 Uhr

JDas kann doch nicht sein... Wenn ich es ohne Binden erstellen will kann ich die Zellen direkt ansprechen Alla DataGridView....

Auch bei WinForms sollte man nicht das Grid ansprechen, sondern immer die Tabelle im "Hintergrund".

Die Rows der Tabelle kann man super gut mit LINQ bearbeiten/suchen. Änderungen werden bei richtigem DataBinding sofort im Grid angezeigt.

25.02.2015 - 17:33 Uhr

Geht es vielleicht so?


HubProxy = Connection.CreateHubProxy("MyHub");
HubProxy.On<MessageInfo>("AddMessage", (messageInfo) =>
{
   Dispatcher.CurrentDispatcher.BeginInvoke((Action) (() =>
   {
      ChatMessage cm = new ChatMessage(messageInfo);
      ChatContent.Add(cm);
     }));                  
 });

Ich hatte heute das selbe Problem und habe es so gelöst, danach ist die Exception nicht mehr gekommen.

25.02.2015 - 06:56 Uhr

Guten Morgen 😃

Also ich würde versuchen das Projekt mit ZedGraph zu realisieren.

Hier ist ein Beispiel, das geht schon mal in deine Richtung.

Wenn man das dann noch mit diesem Beispiel kombiniert, geht das doch schon sehr in die gewünschte Richtung.

Eine Zoomfunktion bringt das Teil schon von Haus aus mit 😉

Mit Oxyplot könntest du das ganze auch noch MVVM konform (Drei Schichten Architektur) realisieren. Ich kann allerdings nicht sagen wie weit Oxyplot jetzt ist. Als ich mich damit beschäftigt habe, konnte das Control im Vergleich zu ZedGraph nicht mithalten. Aber MVVM würde ich an deiner Stelle erstmal als nebensächlich betrachten. MVVM wäre sicher eine eigenständiges Thema für eine Seminararbeit und würde dein eigentliches Ziel erstmal verzögern.

11.02.2015 - 06:51 Uhr

Hallo,

das kannst du mit einer ListView machen:


<ListView Name="MyLIstView" ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
    <ListView.ItemTemplate>
        <DataTemplate>
            <Border BorderThickness="2" CornerRadius="5" BorderBrush="AliceBlue" >
                <TextBlock Margin="5" Text="{Binding Path=Name}" ></TextBlock>
            </Border>
        </DataTemplate>
    </ListView.ItemTemplate>
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>


05.02.2015 - 18:34 Uhr

Vielen Dank für eure Beiträge! Heute ist Help+Manual bei mir eingetroffen. Irgend wie hat das einen besseren Eindruck gemacht und auch den integrierten Bildeditor wollte ich nicht missen. Komischerweise war es nicht mal teurer als HelpNDoc, wir haben uns Angebote von Händlern kommen lassen, die haben scheinbar Spielraum bei der Preisgestaltung. Die Entscheidung fiel dann nicht mehr schwer.

Also, vielen Dank noch mal!

03.02.2015 - 06:42 Uhr

Hallo,

also ich kenne weder deinen Scanner noch die Software. Allerdings habe ich auch schon häufiger mit Scannern von Metrologic gearbeitet. Den Scanner musst du mit der mitgelieferten Doku (ein kleines Heftchen mit Barcodes drinn) auf RS323 Emulation umstellen. Der passende Treiber muss auch noch installiert werden. Hats du dir mal die Doku von deinem Scanner genau angeschaut? Ganz sicher nicht! Hier steht doch wie das geht: https://www.honeywellaidc.com/CatalogDocuments/Omni-DE-QS%20Rev%20A.pdf Und das sogar auf deutsch 😉

01.02.2015 - 21:46 Uhr

Hi,

ok kann sein das es nicht das richtige war. Such mal unter der Software zu dem Gerät. Das muss man irgendwie auf RS232 umstellen können. Leider ist das oft sehr unhandlich. Oder gibt es zu dem Scanner ein kleines Heft in dem lauter Barcodes abgebildet sind? Die Geräte lassen sich auch durch das scannen von Barcodes konfigurieren. Ich habe leider auch immer relativ lange getüftelt....

01.02.2015 - 20:52 Uhr

Hi,

mit dem Configuration Utility kannst du das Ding doch so einstellen, das es mittels RS232 Emulator läuft. Dann landen die Daten immer in deiner "Hand". Das habe ich schon ein paar mal gemacht, läuft sehr zuverlässig.

12.01.2015 - 17:23 Uhr

Hallo zusammen,

ich würde gerne wissen ob hier jemand mit HelpNDoc arbeitet, und es weiter empfehlen kann? Wo sind Unterschiede zu Help & Manual? HelpNDoc ist erheblich günstiger, aber sonst?

Gibt es eventuell weitere gute Programme zur Erstellung von technischen Dokumentationen, die ihr empfehlen würdet? Wichtig ist mir, das sie sehr einfach in der Handhabung sind, mit der Erstellung von Dokumentationen ist man ja schon genug gestraft 🙂

Vielen Dank schon mal!

LG
Christoph

04.12.2014 - 22:21 Uhr

Hi,

ich würde die Dateien nicht neben die EXE streamen, deine Application würde dann Adminrechte benötigen und das muss ja nicht sein. Ich würde sie in das Verzeichnis AppData ablegen.

Streamen würde ich so:


 private void StreamPDFRessource()
 {
     using (var memStream = new MemoryStream(DeineApplication.Properties.Resources.DeinPDF))
     {
         string dir = System.IO.Path.Combine (Directory.GetParent (Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData)).FullName, "DeineApplication");
         //Bin mir nicht sicher ob das der richtige Pfad ist, ich müsste morgen mal schuen welchen ich da immer genau verwende. Könnte sein das der hier auch Adminrechte benötigt

         if (!Directory.Exists(dir))
             Directory.CreateDirectory(dir);

         string file = System.IO.Path.Combine(dir, "PDF.pdf");

         var fStream = new FileStream(file, FileMode.Create);
     }
 }

Warum sollen die DLLs nicht neben der EXE liegen?

27.11.2014 - 20:23 Uhr

Hi,

vielleicht kannst du in deiner Methode kurz "Focusable = false" setzen und nach dem MoveFocus wieder zurück nehmen? Nur so eine Idee........

25.04.2014 - 21:27 Uhr

Ich habe heute noch mal getestet. Das Update funktioniert nur mit dem "G" Format, sonst gibt es eine Exception dass das Format ungültig ist und ich muss immer auf 9 Nachkommastellen ruden, sonst geht es auch nicht. Beim lesen und updaten liegt demnach der selbe Effekt vor wie in der offenen Excel-Tabelle. So lange die Zelle nur angezeigt wird sind es 9 Nachkommastellen, erst wenn die Zelle im Bearbeitungsmodus ist sind es 14.

Den Workaround mit dem Runden werde ich nun beibehalten, ich denke es sollte relativ sicher sein das beim Runden auf 5 Nachkommastellen immer eine Übereinstimmung vorliegt.

Vielleicht versuche ich am Montag noch mal einen verschachtelten Zugriff ala:


UPDATE Excel WHERE (SELECT * FROM Excel.....) = 'was aus dem Sheet mit 14 NKS'
24.04.2014 - 17:45 Uhr

Super, danke für die schnelle Antwort! Ich werde es morgen mit der Culture versuchen! Ich hätte nicht gedacht das es damit zusammenhängen kann, da ich ja beim konsumieren und updaten die selbe Technik verwende.

24.04.2014 - 17:10 Uhr

Hallo Leute,

ich hole mit via OLEDB ein DataSet aus Excel, das funktioniert soweit. Das erledige ich so:

public static DataSet GetExcelDataSet(string excelFile, string[] sheets, bool hasHeaders)
{
    DataSet ds = new DataSet();

    using (OleDbConnection con = new OleDbConnection(ConnectionString(excelFile, hasHeaders)))
    {
           con.Open();

            foreach (string sheet in sheets)
            {
                string tableName = sheet + "$";
                string sql = "SELECT * FROM [" + tableName + "]";
                OleDbDataAdapter adap = new OleDbDataAdapter(sql, con);
                adap.Fill(ds, sheet);
            }
        }      
       
    return ds;
} 

Der ConnectionString setzt sich so zusammen:

private static string ConnectionString(string file, Boolean hasHeaders)
{
    string conString = "Data Source=" + file + ";Provider=Microsoft.ACE.OLEDB.12.0;";

    if (hasHeaders)
        conString += @"Extended Properties=""Excel 12.0;HDR=Yes;IMEX=0""";
    else
        conString += @"Extended Properties=""Excel 12.0;HDR=No;IMEX=0""";

    return conString;
} 

Die eingelesenen Tabellen enthalten Felder vom Type Double, mit 14 Nachkommastellen. Damit war ich bisher auch einverstanden. Nun zu meinem Problem: Ich möchte bestimmte Zellen updaten, das wollte ich so machen:


public static void UpdateExcelFile(string file, string sheet, double rTime, string sub)
{
        string rt = rTime.ToString().Replace(",", ".");

        using (OleDbConnection myConnection = new OleDbConnection(ConnectionString(file, true)))
        {
            string sql = "Update [" + sheet + "$] set Stoff = '" + sub + "' where RetTime=" + rt;

            OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand(sql, myConnection);

            myConnection.Open();

            myCommand.ExecuteNonQuery();
        }

} 

So funktioniert es nicht, das war und ist mir unerklärlich. Ich habe dann die Excel-Tabelle unter die Lupe genommen und festgestellt, das in dieser nur 9 Nachkommastellen angezeigt werden. Erst wenn man die Zelle in den Bearbeitungsmodus versetzt werden 14 Nachkommas angezeigt. Nun vermute ich, das bei dem Update 9 gegen 14 Nachkommastellen verglichen werden und daher kein Update erfolgt, weil kein Treffer.

Hat jemand eine Erklärung dafür und kann mir sagen was ich anders machen könnte? Auf die schnelle habe ich mir erstmal so geholfen:

rTime = Math.Round(rTime, 5)

string sql = "Update [" + sheet + "$] set Stoff = '" + sub + "' where ROUND(RetTime,5)=" + rt;

Wirklich glücklich macht mich das aber nicht.....

27.02.2014 - 06:56 Uhr

Google und dann -> "Message=Parallelitätsverletzung: Der DeleteCommand hat sich auf 0 der erwarteten 1 Datensätze ausgewirkt"

Du wirst einige Erklärungen dazu finden. Die Suche wird dich auch wieder zurück ins Forum führen 😃

17.02.2014 - 20:34 Uhr

Wenn ich nun meine Charts jede 500 Millisekunden aktualisieren will, ist das etwas Problematisch. Oder?

Das kannst du vergessen, die Performance ist schlecht von dem Control.

Desweiteren habe ich gelesen, dass das ChartControll von WindowsForms schneller sein soll. Und das es Möglichkeiten gibt, WinForms Elemente in WPF einzubinden. Aber nur wie?

Ich würde dir ZedGraph empfehlen, das Control ist einfach nur stark. Leider aber nicht direkt in WPF verwendbar. Es kann nur über ein WindowsFormsHost eingebunden werden: Click

Das Pendant zu ZedGraph ist Oxyplot, das ist leider nur noch nicht so weit, kommt aber sicher noch dahin. https://oxyplot.codeplex.com/
Das Control macht schon einen ordentlichen Eindruck wie ich finde, da wird schon einiges gehen.