Laden...
S
sgnirdrol myCSharp.de - Member
Azubi: Anwendungsentwickler Dabei seit 28.08.2013 16 Beiträge
Benutzerbeschreibung

Forenbeiträge von sgnirdrol Ingesamt 16 Beiträge

05.02.2015 - 20:14 Uhr

Es hat zwar nichts mit Programmieren zu tun, aber bin ratlos 😄

Ich versuche das jetzt gar nicht großartig zu erklären weil Bilder mehr als Worte sagen.

Ich wollte nur mal wissen, ob ihr wisst wie sowas zu Stande kommen kann.

Passiert während dem Betrieb. Nur neustart hilft.

Grüße

03.09.2014 - 11:52 Uhr

Hallo zusammen,

ich will folgendes StackPanel mit C# Code definieren, da ich die Panels in einer Schleife erstellen will, da die Anzahl erst zu Laufzeit bekannt ist.


<StackPanel Name="sp1" Orientation="Horizontal" Height="25" Visibility="Hidden" MouseEnter="CallerRowMouseEnter" MouseLeave="CallerRowMouseLeave" MouseLeftButtonUp="sp1_MouseLeftButtonUp" >
           <Label Name="lbCaller1" Width="150"></Label>
           <Label Name="lbNumber1" Width="100"></Label>
           <Label Name="lbCustomer1" Width="90"></Label>
</StackPanel>

Mein Problem ist, ich weis nicht wie ich die Events wie MousEnter, per C# definiere. Könnt ihr mir da weiterhelfen?

Danke!

~Sgnirdrol

21.08.2014 - 14:47 Uhr

Hallo zusammen,

ich habe folgendes Problem.

Ich binde wie folgt ein Icon ein:


<tb:TaskbarIcon x:Name="tbi"
            IconSource="logo3.ico">
...

Das funktioniert auch, aber sobald ich was an der xaml datei verändere auch wenn das gar nichts mit dem Icon zu tun hat findet es dieses nicht mehr.

Wenn ich das Icon aus der dem Projekt lösche und neu einfüge geht es nur wenn ich es vorher umbenannt habe und den XAML Code angepasst habe.

Alos muss ich jedes mal wenn ich etwas an der GUI ändere auch wieder das Bild löschen umbenennen und neu einfügen.

Wisst ihr woran das liegen kann?

Versucht habe ich schon die Projektmappe zu bereinigen, neu erstellen.
VS2013 neugestartet und sogar den PC neu gestartet.

~ Sgnirdrol

09.07.2014 - 10:12 Uhr

Danke für die Antworten!

Ich habe es mit einer Prozedur gelöst, mit Hilfe von den Links die Coffeebean geschrieben hatte.

Die Prozedur:


CREATE PROCEDURE [dbo].[checktbltmpAlpha] AS
IF (
SELECT count(*)
FROM tblTempAlpha
WHERE fldWorkTime IS NULL
GROUP BY fldAuftrag
HAVING count(*) > 1 ) = null 
RETURN 0
ELSE 
RETURN (SELECT count(*)
FROM tblTempAlpha
WHERE fldWorkTime IS NULL
GROUP BY fldAuftrag
HAVING count(*) > 1)

Der Prozedur Aufruf:

DECLARE	@return_value int

EXEC	@return_value = [dbo].[checktbltmpAlpha]

SELECT	'Return Value' = @return_value

~ sgnirdrol

09.07.2014 - 09:27 Uhr

verwendetes Datenbanksystem: MSSQL 2012

Hallo zusammen,

wir wollen in einer Datenbank überprüfen ob es doppelte Einträge gibt.

Folgendes setzten wir momentan als Abfrage ein:


SELECT count(fldAuftrag) as anz
FROM tblTempAlpha
WHERE fldWorkTime IS NULL
GROUP BY fldAuftrag
HAVING count(*) > 1

Das Problem ist, wenn es keinen doppelten Eintrag gibt (was so sein sollte) geht die Abfrage auf NULL. Unser Überwachungstool welches die Abfrage in regelmäßigen Abständen ausführt, kann aber mit NULL-Werten nicht wirklich was anfangen.

Habt ihr eine Idee wie man evtl. die Abfrage anpassen könnte, damit keine NULL-Ergebnisse auftauchen.

~ sgnirdrol

05.05.2014 - 11:27 Uhr

Habe das Problem gefunden. Lag nicht am Einlesen direkt sondern daran, dass ich aus irgend einem Grund für jede Zeile die ich eingelesen hab einen neuen Thread erstellt habe. Hab das nun geändert wie unten zu sehen ist. Und jetzt geht das alles viel schneller.

Trotzdem vielen dank für deine Hilfe, ohne deine Nachfrage hätte ich da wahrscheinlich gar nicht drauf geachtet 😉

Lesen (alt) :

counter = 0;
            String line;
            System.IO.StreamReader file = new System.IO.StreamReader("DEPOTS");
            while ((line = file.ReadLine()) != null)
            {
                if (!line.StartsWith("#"))
                {
                    Thread thread = new Thread(new ParameterizedThreadStart(Depot.readDepots));
                    thread.Start(line);
                    thread.Join();
                    counter++;
                    this.Dispatcher.Invoke((Func<String, bool>)aktuallisiereStatus, counter + " zeilen gelesen");
                }
            }

geändert auf:
Lesen (neu)

counter = 0;
            String line;
            System.IO.StreamReader file = new System.IO.StreamReader("DEPOTS");
            while ((line = file.ReadLine()) != null)
            {
                if (!line.StartsWith("#"))
                {
                    Depot.readDepots(line);
                    counter++;
                    this.Dispatcher.Invoke((Func<String, bool>)aktuallisiereStatus, counter + " zeilen gelesen");
                }
            }
05.05.2014 - 11:08 Uhr

Ich habe jetzt mal grob die Zeiten gemessen in Millisekunden:

in VS:    Lesen   Schreiben
run1       2464        2266
run2       3673        2414

exe:      Lesen   Schreiben
run1      13392        1720
run2      15069        3424

Man sieht ganz deutlich, dass das einlesen der Datei in VS um einiges schneller geht als extern.

Aber warum?
Mit der Performance in VS wäre ich zufrieden (2 Sekunden/2600 Zeilen)
Aber 13 Sekunden für 2600 Zeilen, sind etwas langsam, denn später geht es um 260.000 Zeilen.

05.05.2014 - 10:15 Uhr

Hallo,

ich habe ein Programm in C# geschrieben welches erst eine Datei einliest und dann den Inhalt in eine Datenbank schreibt.

Jetzt habe ich das Phänomen, dass das Einlesen und schreiben schneller geht wenn ich das Programm in Visual Studio laufen lasse, als wenn ich es über die Exe-Datei direkt aufrufe.

Woran kann das liegen?

Danke schon mal für die Hilfe

Grüße

10.01.2014 - 07:25 Uhr

Hallo Remling,

mit welcher Version von Access arbeitest du?

Wenn du mit Access 2007 arbeitest versuch mal die Datei im Format accdb zu speichern und nimm folgenden Connection String:

OleDbConnection anbindung = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Remling\Desktop\Chat Programm\Programm\Chat\Chat\bin\Debug\Datenbank\ChatDataBase.accdb");

Auf diese weise funktioniert es bei mir einwandfrei.

Grüße

09.01.2014 - 10:08 Uhr

Hallo Geaz,

ich bin ganz zufällig auf das hier gestoßen und habe es einfach mal geladen und nen Projekt "Bauen" lassen.

Mit dem Ergebnis bin ich auf den ersten Blick sehr zufrieden.

Das Programm gefällt mir sehr gut, danke dafür 😃

Falls ich nooch was finde was verbessert werden sollte oder so, gib ich dir Bescheid.

Grüße

09.01.2014 - 09:38 Uhr

OKay hat sich erledigt, habe das Projekt in Blend geöffnet und dort die Source auswählen können.
Blend hat dann folgenden Code daraus gemacht:


<Image x:Name="logo" Margin="0,20,0,0" Stretch="None">
                <Image.Source>
                	<ImageSource>pack://siteoforigin:,,,/Resources/logo.png</ImageSource>
                </Image.Source>
            </Image>
09.01.2014 - 09:06 Uhr

Hallo liebe C# Gemeinde 😛

Ich habe folgendes Problem:
Das Bild welches ich in einem Programm einzeigen lassen will liegt im Ordner Resources und heißt logo.png.

In dem Ordner liegt auch eine config.ini
Welche ich im Code ohne Probleme auslesen kann, beim Versuch aber das Bild in die GUI einzubinden habe ich das Problem, dass es beim Ausführen des Programms nicht angezeigt wird. Im GUI-Builder schon.

der xaml Code:


           <Image x:Name="logo" Margin="0,20,0,0" Stretch="None">
                <Image.Source>
                    <BitmapImage UriSource="./Resources/logo.png"></BitmapImage>
                </Image.Source>
            </Image>

Die Dateien im Resource Ordner werden beim Build mit in den Ausgabe Ordner kopiert.

Ich habe auch schon alle möglichen Arten von schreibweisen des Pfades ausprobiert, ohne Erfolg. Das Bild wird im Builder immer angezeit nur nicht beim Ausführen des Programms.

Ich hoffe ihr könnt mir helfen, danke schon mal

Grüße

29.08.2013 - 09:48 Uhr

Also ich habe es jetzt mit einem Style- und Data-Trigger, wie von euch vorgeschlagen realisiert und es klappt wunderbar. Danke dafür.

Hab es zwar noch eine Status Spalte in das DataGrid hinzugefügt um es einfacher Binden zu können.

IM XAML sieht es so aus:


                <DataGrid.RowStyle>
                    <Style TargetType="{x:Type DataGridRow}">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Status}" Value="X">
                                <Setter Property="Background" Value="Red"></Setter>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding Status}" Value="O">
                                <Setter Property="Background" Value="Orange"></Setter>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding Status}" Value="Y">
                                <Setter Property="Background" Value="#639c18"></Setter>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </DataGrid.RowStyle>

Und der dazugehörige Code, welcher den Status setzt so:



            try
            {
                if (row.soll == row.ist)
                {
                    row.Status = "Y";
                }
                else if ((row.soll > row.ist) && (row.ist != 0))
                {
                    row.Status = "O";
                }
                else
                {
                    row.Status = "X";
                }
                dataGrid1.Items.Refresh();
                dataGrid1.UpdateLayout();
                //dataGrid1.SelectedItem = dataGrid1.Items[index];
                dataGrid1.CurrentCell = new DataGridCellInfo(dataGrid1.Items[index], dataGrid1.Columns.First());
                dataGrid1.Focus();
                dataGrid1.ScrollIntoView(dataGrid1.CurrentCell.Item);
            }
            catch (Exception ex)
            {
                Console.Write(ex.StackTrace);
            }


Momentan bin ich grade noch am Überlegen wie ich eine bestimmte Zelle selektiere um damit die zu letzt veränderte Zeile zu makieren.

29.08.2013 - 07:08 Uhr

Okay, Danke euch beiden. Werde es versuchen so umzusetzen.

28.08.2013 - 16:44 Uhr

@Robin0

Weil es keine DataGridView ist sondern ein DataGrid. Das DataGrid hat keine Eigenschaft "Rows".

@ProGamer
item ist vom Typ DataRow, welchen ich selbst definiert habe. Eine Liste von DataRows ist, die ItemSource des DataGrids. Um die DataGridRows aus dem DataGrid zu bekommen, benutze ich den ItemContainerGenerator.

28.08.2013 - 15:33 Uhr

Hallo zusammen,

ich hoffe ich finde nach langem suchen und rumprobieren eine Lösung für mein Problem.

Ich versuche in einem DataGrid, die Zeilen Hintergründe anhand eines Wertes in einer Zelle zu ändern.

Ich benutze momentan diesen Code:

foreach (DataRow item in dataGrid1.Items)
            {
                DataGridRow row = dataGrid1.ItemContainerGenerator.ContainerFromIndex(i) as DataGridRow;
                try
                {
                    if (row == null)
                    {
                        //dataGrid1.UpdateLayout();
                        
                        dataGrid1.ScrollIntoView(dataGrid1.Items[i]);
                        row = dataGrid1.ItemContainerGenerator.ContainerFromIndex(i) as DataGridRow;
                    }
                    
                    if (item.ist == item.soll)
                    {
                        row.Background = new SolidColorBrush(Color.FromRgb(0x63, 0x9c, 0x18));
                    }
                    else if (item.ist < item.soll && item.ist != 0)
                    {
                        enabled = false;
                        row.Background = Brushes.Orange;
                    }
                    else
                    {
                        enabled = false;
                        row.Background = Brushes.Red;
                    }
                }
                catch (NullReferenceException ex)
                {
                    Console.Write(ex.StackTrace);
                    enabled = false;
                }
                i++;
            }

Das Ganze sieht in der GUI wie auf dem Bild datagrid.png im Anhang aus.

Wenn der wert in der Spalte "Soll" = dem Wert in "Ist" ist soll die Zeile Grün sein.
Wenn ist != 0 aber kleiner als Soll ist, soll die Zeile Orange sein.
Sonst sollen die Zeilen Rot sein.

Solange ich kein Scrollbalken habe funktioniert alles einwandfrei. Sobals aber man aber scrollt verschieben sich die einfärbung.

Ich hoffe Ihr könnt mir Helfen

Grüße