Laden...
O
Orothred myCSharp.de - Member
Azubi zum Fachinformatiker / Anwendungsentwicklung Dabei seit 07.09.2007 300 Beiträge
Benutzerbeschreibung

Forenbeiträge von Orothred Ingesamt 300 Beiträge

19.09.2012 - 15:02 Uhr

Moin,

gibts irgendwo ein Code-Snippet, dass mir die Differenz zwischen zwei Daten ohne Wochenende berechnet?

Oder ein paar Anregungen, wie ich da vorgehen kann?

11.11.2010 - 16:52 Uhr

Moin,

die Auflösung vom primären Bildschirm lässt sich ja ganz einfach über Screen.PrimaryScreen.Bounds auslesen.

Wie gehts das ganze für den sekundären Bildschirm?

28.09.2010 - 14:15 Uhr

Ich hatte den Fall vor kurzem auch mal das ich von nem DataGridView in ne DataTable wollte....is unschön wie die Sau, aber geht schon, einfach über foreach-Schleifen durch die Zeilen und Spalten durchgehen und die Werte dann in die DataTable schreiben...

Aber eigentlich gehört man für sowas geschlagen ^^

28.09.2010 - 13:39 Uhr

Vielen Dank, funktioniert ja wie geschmiert, genau das was ich gesucht hab. Danke!

28.09.2010 - 09:50 Uhr

Der Titel klingt wohl verwirrend, aber mir ist nichts bessers eingefallen.

Ich habe ein Control geschrieben, in dem u.a. ein ContextMenu ist. Nun habe ich die Funktionen von einigen Einträgen im Control implementiert...andere Einträge sollen zwar verhanden sein, aber die Funktionen die dahinter stehen kann später je nach Programm,in dem das Control verwendet werden soll variieren.

Ist es also möglich die Funktion, die hinter einem Eintrag in diesem ContextMenu steht erst im späteren Programm, in dem das Control verwendet wird, zu programmieren? Könnte mir vorstellen das das irgendwie über Events geht, aber weiß nicht genau wie....

27.09.2010 - 09:36 Uhr

Verspätete Antwort, hatte letzte Woche Urlaub, sry....

Im Anhang findet ihr mal ein Beispielprojekt, das einfach nur ne Form mit meinem Control drin enthält. Da könnt ihr auch die Punkte im Designer in der Kategorie ContextMenu ja mal anschauen.

17.09.2010 - 11:12 Uhr

Scheint ja wirklich ein unbekanntes Problem zu sein.....gibts gar niemanden der zumindest eine Ahnung hat woran das liegen könnte?

16.09.2010 - 15:44 Uhr

Das Control selbst steht auch auf true

/edit: und ja, deine Glaskugel hat recht ^^

14.09.2010 - 14:42 Uhr

Moin,

ich habe mehrere Properties, die alle nach folgendem Muster aufgebaut sind:


[Description("Indicates whether the Print-ContextMenuItem is shown"),
Category("ContextMenu"),
Browsable(true),
DefaultValue(true),
EditorBrowsable(EditorBrowsableState.Advanced)]
public bool ShowPrint
{
    get
    {
        return tsmiDrucken.Visible;
    }
    set
    {
        tsmiDrucken.Visible = value;
    }
}

Sprich, es soll möglich sein Einträge in einem Kontextmenü anzuzeigen oder auszublenden.

Bei diesen Properties hab ich nun folgendes Problem:

Egal was im DefaultValue steht, wenn ich mein Control in ein Testprojekt einbinde, stehen diese Properties im Designer auf false, und ich wenn ich versuche sie zu ändern kann ich zwar true anklicken, allerdings bleibt die Anzeige danach auf false.

Angezeigt werden sie nach dem Kompilieren natürlich nicht im Kontextmenü

14.09.2010 - 10:44 Uhr

Schönes Ding, vielen Dank dafür

14.09.2010 - 09:48 Uhr

Moin,

Wenn ich mittels foreach-Schleife die SelectedRows eines DataGridViews durchlaufe fängt er ja immer bei der letzten ausgewählten Zeile an, was ja auch logisch ist zwecks Indexfehlern die andersrum auftreten könnten.

Nun muss ich allerdings ausnahmweise die SelectedRows mittels foreach "richtig rum" durchlaufen. In VB gibts da einen Reverse-Befehl, mit dem man Collection umdrehen kann. Gibts sowas auch in C# für meinen Fall hier?

14.09.2010 - 08:15 Uhr

Abstürzen sollte es nicht, das löschen von 100.000 Datensätzen dauert seine Zeit, in der einfach das GUI vom Management Studio blockiert.....einfach mal ein paar Minuten warten, dann sollte es wieder laufen.

Ob das an dem DateTime liegt oder nicht kann ich dir nicht sagen, aber abstürzen tut es nicht

13.09.2010 - 16:47 Uhr

Sorry, hatte ich übersehen.
Der LIKE Operator kann auf DateTime nicht angewendet werden, also musst du das DateTime Feld in String umwandeln und dann vergleichen.

Richtig....soweit war ich schon bevor ich den Thread erstellt hab ^^

13.09.2010 - 16:37 Uhr

Dann bleibt mir wohl nix anderes übrig als den Typ der aktuellen Spalte per if abzufragen und dann den Select-Part dementsprechend anzupassen, wenn ich das richtig seh...

13.09.2010 - 16:27 Uhr

Wie schon gesagt, Änderungen datenbankseitig sind nicht möglich.

Es geht hier um ein Control, das u.a. eine Filterfunktion zur Verfügung stellen soll...sprich auf deutsch gesagt scheiß egal was in der DB steht, das Ding muss filtern ^^

13.09.2010 - 16:11 Uhr

Für eine Filterfunktion in meinem Programm....z.B. wenn ich alle Datensätze vom 01.01.2010 rausfiltern will....

Das ganze muss mit DateTimes genauso funktionieren wie mit Strings

13.09.2010 - 12:42 Uhr

Die Frage versteh ich nicht ganz....ich will Zeilen aus einer DataTable nach bestimmten Kriterien auswählen....was sonst? ^^

13.09.2010 - 10:54 Uhr

Ersten Logikfehler hab ich schon selbst gefunden....


strFilterKriterium = dgvMain.Columns[Int32.Parse(strFilterArray[i,0])].Name;
DataRow[] foundRows = tableFilter.Select("CONVERT(" + strFilterKriterium + ", System.String) LIKE '%" + strFilterArray[i, 1] + "%'");

Is natürlich Blödsinn, wenn ich den Spaltennamen nochmal auf String konvertiere....ich vergleich ja im Endeffekt den Wert.

Wie ich das dann mach, da steh ich dann jetzt allerdings erstmal ganz aufm Schlauch...

Warum soll ich nicht DataTable.Select verwenden, bzw. was gibts für Alternativen?

Der Code mag bisschen wirr sein....strFilterArray ist ein zweidimensionales Array, in dem alle Filterkriterien mit den Spaltennummern, in denen gefiltert werden soll drinstehen. Das i kommt aus ner for-Schleife, die da drum rum ist. Von der Logik her läuft der Code wunderbar, nur das mit den DateTimes klappt nicht...

13.09.2010 - 09:37 Uhr

Moin,

ich habe eine DataTable.Select-Anweisung nach folgendem Aufbau: "[Spaltenname] LIKE %[Wert]%".

Funktioniert bei Spalten vom Typ String wunderbar, bei Spalten vom Typ DateTime natürlich nicht.

Dann habe ich versucht mittels CONVERT die Spalten immer explizit auf String zu konvertieren, damit der Vergleich läuft.

Allerdings bekomme ich nun bei DateTime-Spalten die Meldung das es sich nicht um einen gültigen DateTime-Typ handelt. In der DataTable steht der DateTime im Format dd.mm.yyyy hh:MM

Wer kann mir hier weiterhelfen? Änderungen an den Daten sind nicht möglich, die sind mit datenbankseitig so vorgegeben.

06.09.2010 - 15:36 Uhr

Ja, ich weiß, der Threadtitel wird wahrscheinlich einige abschrecken und denken lassen "hat mal wieder einer die FAQ´s nicht gelesen"...falsch...habe ich...genau darauf bezieht sich meine Frage ^^

Folgende Problemstellung:

Ein DataGridView wird mittels einer Methode aus einer Datenbank aktualisiert, dieser Vorgang läuft länger als 1/10s -> GUI blockiert.

Daraufhin hab ich [FAQ] Warum blockiert mein GUI? gelesen, die mir sagt das alle Aktionen die länger als 1/10s laufen in einen eigenen Thread ausgelagert werden müssen....wenn ich das tue und trotzdem auf das DataGridView zugreifen möchte bekomme ich natürlich die altbekannte Exception von wegen "Aufruf aus anderem Thread".

Also las ich [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke), und erfuhr das man Control.Invoke benutzen kann, um Aufrufe an den GUI-Thread zurück zu geben. Allerdings nur bei Vorgängen, die kürzer als 1/10s dauern, da sonst das GUI blockiert.

Sprich, irgendwie drehe ich mich grade im Kreis....wer hilft mir da raus? ^^

06.09.2010 - 11:23 Uhr

Oh Mann...ich sollte mir echt mal hinter die Ohren schreiben Parameter zu nutzen...

Danke für die schnelle Hilfe 😃

06.09.2010 - 11:12 Uhr

verwendetes Datenbanksystem: MSSQL 2005

Ich bin hier gerade am Rand der Verzweiflung..

Ich versuche in schlichtes einfaches UPDATE-Statement, in dem ich ein Feld in der DB updaten will das vom Typ DateTime ist.

Folgenden Code hab ich im Moment:


// Werte in Variablen schreiben
string strPlanzeit = dtpPlanzeitAendern.Value.ToString("dd-MM-yyyy-HH.mm");
string strRowID = _grid.Rows[currentRow].Cells["ID"].Value.ToString();

// Planzeit ändern

SqlConnection con = new SqlConnection(_connString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "UPDATE LKW.LKWPlanung SET [Planzeit] = " + strPlanzeit + " WHERE [ID] = '" + strRowID + "'";
con.Open();
cmd.ExecuteNonQuery();
con.Close();

// Form schließen
this.Close();

Er updatet mir hier das Feld, schreibt als Datum allerdings irgendwas aus dem Jahr 1905 rein...1894 war auch schon dabei...

Wenn ich im Statement anstatt dem string ein DateTime übergebe, dann bekomme ich ne SQLException die mir sagt das die Syntax des Statements nicht passt (Line 1: Incorrect syntax near '.1905', hier war allerdings wirklich mal 1905 als Jahr im DateTimePicker gestanden)

Irgendwie liegt das ganze wohl am Format, ich weiß bloß nicht welches ich da brauch...kann mir jemand weiterhelfen?

26.08.2010 - 09:17 Uhr

Der Code tut im dem Fall wenig zur Sache, der funktioniert....nur der Filterstring liefert mir nicht das was ich such, also ist der Filterstring auch das was ich brauch ^^

Der der nicht funktioniert steht übrigens in meinem ersten Beitrag

25.08.2010 - 15:27 Uhr

Na ja, dann versuch ich mal den Aufbau zu beschreiben

Ich lese die aktuelle Domain in einen DirectoryEntry...untergeordnet ist dann der "Ordner" Benutzer, dort drin sind die Gruppen, in denen dann die User sind...

Reicht das, oder was braucht ihr noch?

25.08.2010 - 14:21 Uhr

Öhm...eigentlich schon ^^

Was fehlt an Infos? Aufbau des AD´s?

25.08.2010 - 12:30 Uhr

Moin,

eigentlich recht einfach, die Aufgabe...ich suche für den DirectorySearcher einen Filter-String der mir alle User einer bestimmten Gruppe ausgibt.


"(&(objectClass=user)(group='" + txtGruppe.Text + "'))"

liefert mir kein Ergebnis...

24.08.2010 - 11:11 Uhr

Wenn ich den Wert im Konstruktor setze, dann bleibt die Farbe aber immer gleich, egal was ich nachher im Designer wähle...

24.08.2010 - 10:20 Uhr

Morgen zusammen,

habe in einem Projekt folgendes Property:


[Description("The Color of the CellProgressBar"),
         Category("Appearance"),
         Browsable(true),
         EditorBrowsable(EditorBrowsableState.Advanced)]
        public Color CellProgressBarColor
        {
            get
            {
                Color colorReturn = new Pen(colorCellProgress).Color;
                return colorReturn;
            }
            set
            {
                colorCellProgress = new SolidBrush(value);
            }
        }

Wie bekomme ich hier einen Default-Value gesetzt? Bekomme vom Designer immer die Meldung das das Feld nicht null sein darf, ist ja auch richtig. Allerdings bietet mir die Eigenschaft DefaultValue keine Möglichkeit eine Color zu übergeben....

13.08.2010 - 13:43 Uhr

Klingt...logisch....autsch ^^

Danke, hat geholfen ^^

/edit: Jetzt wird das Property auch angezeigt so wie ichs wollte...vielen Dank

13.08.2010 - 09:49 Uhr

So...irgendwie beendet sich Visual Studio jetzt jedes mal schlagartig wenn ich im Designer auf das Control klicke....hab seit gestern nichts mehr verändert....jemand nen Plan woran das liegt? ^^

/edit: Mir ist gerade aufgefallen, selbst wenn ich nur versuche das Projekt mit dem Control zu Rebuilden, dann startet sich im Taskmanager die .exe von meinem Testprojekt für das Control, und Visual Studio schmiert ab....ich bin verwirrt...

12.08.2010 - 16:57 Uhr

Sicher hab ichs kompiliert, und auch unter der richtigen Kategorie geschaut ^^

12.08.2010 - 16:49 Uhr

EditorBrowsable gibts, hilft aber auch nix, egal was ich übergeb

12.08.2010 - 16:40 Uhr

Danke schonmal für den Link, hab jetzt über das Property


[Description("Indicates whether the FilterGrid is shown"),
 Category("Appearance"),
 DefaultValue(true),
 Browsable(true)]

gesetzt, allerdings wirds immer noch nicht angezeigt....

12.08.2010 - 16:15 Uhr

Hallo zusammen,

ich entwickle gerade ein eigenes Control, das aus zwei DataGridViews besteht. Im unteren werden die Daten angezeigt, das obere besteht aus nur einer Zeile und dient als Filter des unteren.

Nun habe ich folgendes Property geschrieben:


public bool ViewFilterRow
        {
            get
            {
                return ViewFilterRow;
            }
            set
            {
                if (value == true)
                {
                    dgvSort.Visible = true;
                }
                else if (value == false)
                {
                    dgvSort.Visible = false;
                }
            }
        }

Funktioniert auch wunderbar, wenn ich das ganze im Code von meinem Testprojekt auf false setzte wird das obere Grid ausgeblendet. Allerdings möchte ich dieses Property nun auch in der Designeransicht im Property-Bereich haben...dort taucht es allerdings nicht auf.

Woran liegt das?

12.08.2010 - 11:35 Uhr

Na, indem du aus deiner Zuordnungstabelle alle Datensätze mit deiner gewählten SpedNr ausliest und dann die andere Tabelle per Schleife durchgehst und alle Datensätze ausgeben lässt die deine vorher ausgelesenen Kundennummern enthalten....sollte jetzt nicht wirklich ein Hexenwerk sein...

10.08.2010 - 16:29 Uhr

Process-Member

Schau dir mal GetProcessByName an

10.08.2010 - 13:14 Uhr

Na ja, was du falsch machst hast du ja schon gesagt, du überschreibst deine DataSource mit null, dann gehen deine Namen auch verloren...

10.08.2010 - 12:22 Uhr

Das hilft mir jetzt aber nichts, da mein Sortiergrid nur zur Eingabe dient und dort keine DataTable dahinter steckt. Das DataGridView hat kein Event ColumnChanging...mit den CellValidate und CellValidating-Events hab ichs jetzt auch schon probiert....

10.08.2010 - 09:31 Uhr

Moin zusammen, mal wieder ^^

Ich habe in einer Form zwei DataGridViews. Das obere besteht aus nur einer Zeile, im unteren sind die Daten zu finden. Spaltenmässig sind die beiden Grids identisch.

Nun möchte ich durch eine Eingabe im oberen Grid die Werte im unteren filtern. Das ganze wollte ich über das CellValueChanged-Event des oberen Grids machen, was soweit auch funktioniert.

Als ich mich nun an die Fehlerbehandlung machte bekam ich natürlich bei der Eingabe eines Buchstabens in eine Integer-Zelle eine FormatException, was ja auch so sein soll.

Ich bekomme diese Exception sobald ich den Buchstaben eingebe und Enter drücke. Als ich diesen Fehler nun behandeln wollte viel mir auf das er gar nicht im CellValueChanged-Event auftritt, bis dahin komme ich überhaupt nicht.

KeyPress und KeyDown hab ich auch schon versucht, allerdings ohne Erfolg.

Ich müsste nun wissen welche Events da in welcher Reihenfolge ablaufen um rauszufinden wo dieser Fehler auftritt....wer könnte mir da weiterhelfen?

09.08.2010 - 14:44 Uhr

Klappt, allerdings seltsamerweise nur mit mnuMain[0] und nicht mit mnuMain["Ausführen"], da bekomm ich ne NullReferenceException...

Bin eigentlich kein Freund davon den Index zu nutzen, der Name wär mir lieber, gibts hier noch ne Lösung dafür, oder muss ich mich damit abfinden? ^^

09.08.2010 - 13:16 Uhr

Moin zusammen,

ich möchte ein MenuStrip dynamisch aufbauen lassen. Im MenuStrip sind 3 feste Oberpunkte (Ausführen, Drucken, Abbrechen).

Ausführen soll nun dynamisch aus einer Datenbank Unterpunkte bekommen. Hab mich hier im Forum und bei Google umgeschaut und rausgefunden das man einfach ToolStripMenuItem.DropDownItems.Add dafür nutzen kann.

Wenn ich allerdings mit mnuMain.Items["Ausführen"] (mnuMain ist mein MenuStrip) arbeite, dann liefert mir das ganze kein ToolStripMenuItem, sondern ein ToolStripItem, und das hat keine DropDownItems-Eigenschaft...

Wie realisier ich das ganze nun?

03.08.2010 - 16:08 Uhr

Problem ist das mehrere User mit dem Programm arbeiten, wenn einr was macht soll sichs bei den anderen aktualiseren nach ner gewissen Zeit, sprich die Daten kommen aus ner Datenbank.

Dann dürfte das was du meinst eher nicht funktionieren...

03.08.2010 - 15:59 Uhr

Moin zusammen,

ich suche nach einem anständigem Konzept eine Aktualisierung zu realisieren.

Habe mehrere DataGridViews in meinem Programm, die zeitgesteuert aktualisiert werden sollen. Natürlich soll der Anwender davon nichts merken und die GUI soll nicht geblockt werden (den entsprechenden Thread habe ich gelesen, allerdings werd ich nicht so ganz schlau drauß....leider).

Pro Grid habe ich eine Funktion die das Grid aktualisiert. Eine Funktion pro Grid deshalb da nicht immer alle Grids gleichzeitig aktualisiert werden müssen.

Ich bräuchte nun ein paar Denkanstöße wie ich das ganze am besten realisieren könnte. Dankeschön schonmal

28.07.2010 - 15:54 Uhr

Blöd gesagt: Wollen die so haben ^^

Praktisches Beispiel:

Sortiert werden soll nach Status.

Alle Datensätze die Status "verspätet" haben sollen dann innerhalb dieser Sortierung nach der Geplanten Ankunftszeit sortiert werden, der Rest nach der tatsächlichen Ankunftszeit

28.07.2010 - 15:43 Uhr

Jo, wie gesagt, habs ja mittlerweile geändert ^^

Funktion von DataView.Sort ist mir soweit auch klar, mir fehlt eben ne Idee wie ich diese Abhängigkeit herstellen kann, wie in meinem Edit zu lesen...

28.07.2010 - 15:25 Uhr

Ich binde aber kein DataSet über eine BindingSource, sondern eine DataTable über DataGridView.DataSource...

/edit: Ok, jetzt klar was du meinst...

Frage ist jetzt aber immernoch wie ich da die Abhängigkeit herkrieg das beim einen Status nach Spalte A und beim anderen Status nach Spalte B sortiert wird...

28.07.2010 - 14:21 Uhr

Hab den MSDN-Artikel mal durchgearbeitet und bin dann auf diesen Satz gestoßen

Diese Methode funktioniert nur, wenn die DataSource-Eigenschaft nicht festgelegt ist.Wenn Sie das DataGridView-Steuerelement an eine externe Datenquelle binden, müssen Sie die Sortieroperationen verwenden, die von dieser Datenquelle bereitgestellt werden.

Heißt das wenn ich die DataGridView.DataSource-Eigenschaft an ne DataTable binde funktioniert das ganze nicht? Wie macht mans dann am besten?

23.07.2010 - 12:08 Uhr

Danke, les ich mich mal ein...

Und ja...Eigenschaften, Methoden....Dinger da halt...^^