Laden...
C
Christoph1968 myCSharp.de - Member
SMT-Applikationsingenieur Muenchen Dabei seit 20.08.2007 93 Beiträge
Benutzerbeschreibung
Bash C++ C#

Forenbeiträge von Christoph1968 Ingesamt 93 Beiträge

03.03.2010 - 13:18 Uhr

Wenn ich statt


((DataGridViewCheckBoxCell)dataGridViewRow.Cells["Import"]).Value = true;

schreibe


((DataGridViewCheckBoxCell)dataGridViewRow.Cells["Import"]).Value = ((DataGridViewCheckBoxCell)dataGridViewRow.Cells["Import"]).TrueValue;

dann geht es.

Irgendwie auch fast wieder logisch.

02.03.2010 - 22:00 Uhr

Hallo zusammen,

ich habe ein DataGridView bestehend aus 2 Columns.
Die erste Column ist eine DataGridViewCheckBoxColumn, sie ist nicht gebunden.
Die zweite Column ist gebunden.

Was auch immer ich nun mache, der DataGridViewCheckBox.Value scheint immer
null zu sein, ob ich nun den ValueType setze oder nicht und / oder den true- und falseValue angebe oder nicht und / oder nach der Datenbindung einen Wert zuweise oder nicht, ob ich diese Dinge in der Column oder in der Cell setze,
es bleibt zumindest fuer mich ohne Effekt.

Nur, wenn die CheckBox mit der Maus gesetzt wird, ist der Value nicht null.

DataGridView.VirtualMode = false

Ich schäm mich fast schon, so einen sch.... zu fragen, es ist doch mit Sicherheit ganz simpel, aber ich komm seit fast 3 Stunden nicht drauf
und bin jetzt ein bißchen ratlos...

Hier ist mein Code, er steht im Constructor der Form

  DataGridViewCheckBoxColumn dataGridViewCheckBoxColumnImport = new DataGridViewCheckBoxColumn();
            dataGridViewCheckBoxColumnImport.Name = "Import";
            dataGridViewCheckBoxColumnImport.HeaderText = Translator.translator.GetString("AddThisSourceFileDescriptor");
            dataGridViewCheckBoxColumnImport.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
        
            DataGridViewTextBoxColumn dataGridViewTextBoxColumnName = new DataGridViewTextBoxColumn();
            dataGridViewTextBoxColumnName.Name = "Name";
            dataGridViewTextBoxColumnName.HeaderText = Translator.translator.GetString("Name");
            dataGridViewTextBoxColumnName.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dataGridViewTextBoxColumnName.DataPropertyName = "Name";
            dataGridViewTextBoxColumnName.ReadOnly = true;

            dataGridViewSourceFileDescriptors.Columns.AddRange (dataGridViewCheckBoxColumnImport, dataGridViewTextBoxColumnName);
            
            dataGridViewSourceFileDescriptors.AutoGenerateColumns = false;
            dataGridViewSourceFileDescriptors.DataSource = listSourceFileDescriptorSettings;

            dataGridViewCheckBoxColumnImport.ValueType = typeof(bool);
            dataGridViewCheckBoxColumnImport.TrueValue = true;
            dataGridViewCheckBoxColumnImport.FalseValue = false;

            foreach (DataGridViewRow dataGridViewRow in dataGridViewSourceFileDescriptors.Rows)
            {
                ((DataGridViewCheckBoxCell)dataGridViewRow.Cells["Import"]).ValueType = typeof(bool);
                ((DataGridViewCheckBoxCell)dataGridViewRow.Cells["Import"]).TrueValue = true;
                ((DataGridViewCheckBoxCell)dataGridViewRow.Cells["Import"]).FalseValue = false;
                ((DataGridViewCheckBoxCell)dataGridViewRow.Cells["Import"]).Value = true;
            }
  

Vielen Dank fuer jede Hilfe.

Grüße und gute Nacht.

Christoph

16.02.2010 - 22:30 Uhr

verwendetes Datenbanksystem: <keines>
Hallo zusammen,

ich habe in VS2005 in einem Report (nicht Crystal-Report) als Datenquelle
ein selbsterstelltes Objekt gebunden, das einen String, zwei List<string> und ein Dictionary enthaelt.
Wenn ich nun den einzelnen String in ein Textfeld ziehe, wird dieser im Report korrekt angezeigt.
Wenn ich eine der List<String> in ein Listenfeld (oder Textfeld) ziehe, wird im Bericht "#Error" ausgegeben.
Ich hab nun gegoogelt, finde aber nur Informationen mit DataSet-Bindungen.

Versuche ich da etwas, was gar nicht funktionieren kann ?

Vielen Dank.

PS: Sollte mein Beitrag an falscher Stelle stehen, bitte adaequat verschieben
und sorry, es steckte keine böse Absicht dahinter

Christoph

02.02.2010 - 10:01 Uhr

Hallo herbivore,

vielen Dank fuer Deine schnelle Anwort (Wie machst Du das eigentlich? Wann immer ich poste, hast Du nach höchstens 1 Stunde geantwortet. Muß man auch mal sagen, Hut ab und vielen Dank dafuer. So schnelle Hilfe bekommt man selten,
noch nicht mal dort wo man viel Geld dafuer bezahlt, schon eine Stunde in der Warteschleife zu haengen)

Ich werde mich mit beiden Alternativen
intensiver befassen.

Aber noch kurz zum Verstaendnis, da ich die Klasse Identity nicht veraendern kann:

Muss ich eine

MyIdentity:Identity, IMyInterface

einfuehren?

Nochmals danke und einen schönen Tag,

Christoph

02.02.2010 - 08:51 Uhr

Hallo zusammen,

ist es moeglich, ein Objekt, dessen Typ erst zur Laufzeit bekannt wird,
zu testen, ob es einen bestimmten Member aufweist ?

Hintergrund: Ich wuerde gerne viele TreeViews bedingt fuellen und nicht fuer jede Gelegenheit eine
eigene Funktion schreiben, wenn es sich vermeiden laesst.

Ich stelle mir das so in der Art vor:


//listIdentity Die Liste mit den Identities, die eine Referenz auf das Objekt besitzen, welches sie repraesentieren
//memberName Der name des Members, welchen ich vergleichen oder auswerten moechte
//CompareMember Das Objekt, das vom gleichen Typ wie der Member sein muss, gegen das verglichen wird




fillTreeView(List<Identity> listIdentity, string memberName, object compareMember)
{
	foreach(Identity identity in listIdentity)
	{
		if(identity.Object.hasMember(memberName)) //Wenn das Object ein Member dieses Namens besitzt
		{
			object memberObject = identity.Object.getMember(memberName); //Hole Objekt

			if(compareMember.Type == memberObject.Type && identity.Object.getMember(memberName) == compareMember)
			{
				addtoTreeView(identity);
			}
		}
	}
}

Geht das ueberhaupt, oder will ich da was ziemlich Unmoegliches ?

Hat jemand ein oder zwei Schlagworte fuer mich, vielleicht auch einen Link,
wo ich etwas dazu finden koennte ?

Vielen Dank fuer Eure Hilfe

Grüße

Christoph

08.12.2009 - 08:34 Uhr

HSHVH !!

Ich hatte nach besagtem Funktionsaufruf ein beherztes


feederInventoryDataBindingSource.ResetBindings(true);

stehen, ich hatte das zur Fehlersuche fuer ein
anderes Problem dort eingefuegt und natuerlich prompt vergessen.

Weiterhin werde ich das Schreiben dieser Defaultwerte in die Zellen der nicht
datengebundenen Spalten im DataGridView.NewRowsAdded-Event durchfuehren,
wahrscheinlich ist es dort am besten aufgehoben.

Trotzdem vielen Dank jedem, der darueber nachgedacht hat.

Grüße

Christoph

07.12.2009 - 21:27 Uhr

Hallo zusammen,

habe ein seltsames Problem:

Ich benutze ein DataGridView, gebunden mittels BindingSource.DataSouce
an ein Objekt.

Ich habe zwei zusaetzliche Spalten, die nicht datengebunden sind.

Wenn ich nun unmittelbar nach der Datenbindung die Zellen dieser Spalten
mit Werten fuellen moechte, werden die Spalten leer angezeigt.

Zu einem späteren Zeitpunkt in einer anderen Funktion klappt das reibungslos

Hier klappt es nicht:


feederInventoryDataBindingSource.DataSource = feederInventory.FeederInventory.FeederInventoryData;
                    toolStripLabelFeederInventoryName.Text = identityInventory.FullPath;
                    merkerIdentityFeederInventory = identityInventory;

                    //Application.DoEvents();


                    foreach (DataGridViewRow zeile in dataGridViewFeederInventorySource.Rows)
                    {
                        zeile.Cells["RequiredQuantity"].Value = 0;
                        zeile.Cells["ResultQuantity"].Value = zeile.Cells["quantityDataGridViewTextBoxColumn"].Value;

                    }//foreach (DataGridViewRow zeile in dataGridViewFeederInventorySource.Rows)
                   

Nach diesem Aufruf werden die Werte korrekt angezeigt:


 foreach (DataGridViewRow zeile in dataGridViewFeederInventorySource.Rows)
            {
                biz.FeederInventoryData feederInventoryData = (biz.FeederInventoryData)zeile.DataBoundItem;

                int feederCount = 0;

                feederDictionary.TryGetValue(feederInventoryData.FeederType, out feederCount);
                
                zeile.Cells["RequiredQuantity"].Value = feederCount;

                if (feederInventoryData.Quantity - feederCount < 0)
                {
                    zeile.Cells["ResultQuantity"].Style.ForeColor = Color.Red;
                }
                else
                {
                    zeile.Cells["ResultQuantity"].Style.ForeColor = Color.Black;
                }

                zeile.Cells["ResultQuantity"].Value = feederInventoryData.Quantity - feederCount;

Ich komme einfach nicht drauf, woran es liegt.

Wenn ich der BindingSource ihre DataSource zuweise, ist das ja eigentlich kein
Funktionsaufruf, andererseits muessen ja aufgrund dieser Zuweisung schlussendlich die Zeilen des DataGridView erzeugt werden, das diese BindingSource benutzt. Geschieht das sozusagen asynchron, bzw. werden die Zellen der nicht datengebundenen Spalten asynchron erzeugt ?

Vielen Dank fuer eine Idee.

12.10.2009 - 10:33 Uhr

Hallo Herbivore,

das war eigentlich, was ich wissen wollte. Mit dem Regex alleine kriegt man das nicht hin.

Danke Dir

Christoph

29.09.2009 - 08:56 Uhr

Hallo,

tut mir leid, ich steh anscheinend immer noch auf dem Schlauch,
oder schaffe es einfach nicht, mich richtig auszudruecken


    Regex regEx = new Regex (@"(?<variable_0>(?<variable_3>(?<variable_1>\d{3})(.*)(?<variable_2>[A-Z]{5}))" + @"(?<variable_5>.*)(?<variable_4>[A-Z]{5}))");
            string teststring = "123das_soll_nicht_in_variable_3_erscheinenABCDEtestomatFGHIJ";

            MatchCollection treffer = regEx.Matches(teststring);

            foreach (Match match in treffer)
            {
                string variable_0 = match.Groups["variable_0"].Value; // 123das_soll_nicht_in_variable_3_erscheinenABCDEtestomatFGHIJ
                string variable_1 = match.Groups["variable_1"].Value; // 123
                string variable_2 = match.Groups["variable_2"].Value; // ABCDE
                string variable_3 = match.Groups["variable_3"].Value; // 123das_soll_nicht_in_variable_3_ersecheinenABCDE Ich braeuchte hier nur "123ABCDE"
                string variable_4 = match.Groups["variable_4"].Value; // FGHIJ
                string variable_5 = match.Groups["variable_5"].Value; // testomat

            }

Ist es moeglich, bei gegebener Zeichenkette, ein Pattern zu formulieren,
das der variable_3 den Wert "123ABCDE" zuweist ?

Vielen Dank nochmals.

Grüße

Christoph

28.09.2009 - 21:45 Uhr

Hallo Herbivore,

ich glaube ganz dunkel beginnt es zu daemmern.

Vielen Dank Dir,

damit kann ich jetzt mal spielen.

Grüße

Christoph

28.09.2009 - 21:05 Uhr

Hallo Marsti,

das war schon ein gutes Stichwort, und ich habe zumindest fogendes erreicht:


   Regex regEx = new Regex(@"(?<variable_1>\d{3})(?<variable_2>[A-Z]{5})(?<variable_3>\k<variable_1>\k<variable_2>)");

            string teststring = "123ABCDE123ABCDE";

            MatchCollection treffer = regEx.Matches(teststring);

            foreach (Match match in treffer)
            {
                string variable_1 = match.Groups["variable_1"].Value; // 123
                string variable_2 = match.Groups["variable_2"].Value; // ABCDE
                string variable_3 = match.Groups["variable_3"].Value; // ABCDE123
            }

Das Problem ist jetzt nur, dass die Zeichenkette nur aus "123ABCDE" besteht,
nicht wie im Beispiel aus "123ABCDE123ABCDE", und dann der RegEx natuerlich nichts findet.

Kann ich in einem Pattern angeben, die uebergebene Zeichenkette zweimal zu durchsuchen ?

Grüße

Christoph

28.09.2009 - 20:06 Uhr

Hallo Herbivore

vielen Dank fuer Deine Antwort,
ja, das Thema ist auch ein bißchen verzwickt.
Die Kernfrage ist, ob ich einer variable_3 innerhalb der Patterndefinition
die Zeichenkette der variable_1 und der variable_2 quasi explizit zuweisen kann ?

Ich moechte herausbekommen, ob ich dieses Problem nur ueber die Patterndefinition loesen kann, eine Anpassung der Software ist gerade das, was ich vermeiden will.

Christoph

28.09.2009 - 19:32 Uhr

Hallo zusammen,

ich hab ein etwas ungewöhnliches Anliegen

Ein Programm wertet einen regulaeren Ausdruck aus, um
verschiedene Variablen zu belegen

(?<variable_1>\d{5})...(?<variable_2>[A-Z]{12})$

Was jetzt im einzelnen mit den durch die Bezeichner variable_1 und variable_2
geschieht, entzieht sich meiner Kenntnis, ich habe weder die Moeglichkeit den
Quellcode einzulesen, noch ihn zu aendern.

Die einzige Moeglichkeit, die ich habe, ist die Musterdefinition des Regulaeren Ausdrucks.

Meine Frage ist nun, ich muesste jetzt eine 3.Variable definieren variable_3,
die sich zusammensetzt aus den in variable_1 und variable_2 gespeicherten Zeichenketten

So ungefaehr nach dem Motto

(?<variable_1>\d{5})...(?<variable_2>[A-Z]{12})(?<variable_3>=\k<variable_1>\k<variable_2)$

Ich muss / moechte eine Variable liefern, die nicht explizit in der auszuwertenden Zeichenkette vorhanden ist, sondern sich aus 2 in der Zeichenkette voneinander unabhaengigen Fragmenten zusammensetzt.

Geht so etwas prinzipiell ?

Vielen Dank

Christoph

21.09.2009 - 20:20 Uhr

Ich hab das jetzt so geloest, dass ich die position in der zugrundeliegenden
binding-source aendere


      BindingSource binding_source = (BindingSource)dataGridView_ois_host.DataSource;
                binding_source.Position = dataGridView_ois_host.CurrentCell.RowIndex;
        

Das ist zwar nicht schoen, aber es scheint zu klappen.

21.09.2009 - 19:29 Uhr

Hallo Stipo,

das ist der Pfeil im Column-Header.
Es stimmt, was Du sagst, er gibt die Sortierreihenfolge der Spalte an, die sortiert wurde, aber den habe ich nicht gemeint.

Ich meine den Pfeil, der im RowHeader (also im vertikalen Header) der Zeile erscheint, die mit der Maus angeclickt wurde.

Grüße

Christoph

21.09.2009 - 17:32 Uhr

Hallo zusammen,

beim DataGridView erscheint im RowHeader derjenigen Zeile, auf die ein Mausclick ausgefuehrt wurde ein kleiner Pfeil oder Marker.

Ich war bisher der Meinung, das kennzeichnet die DataGridView.CurrentRow,
die wiederum die Zeile ist, die die DataGridView.CurrentCell enthaelt, was vermutlich ja auch zutrifft, nur wenn ich programmatisch (nicht via Mausclick) die DataGridView.CurrentCell setze, bleibt der Pfeil oder Marker auf der Zeile auf der er vorher stand.

Die Frage ist nun: Was sagt denn der Marker ueberhaupt,
denn die CurrentRow / CurrentCell scheint er ja nicht zu markieren, oder hab ich da was falsch verstanden.

Mein eigentliches Problem ergibt sich daraus, dass das DataGridView an eine DataSource (SQL-Tabelle / DataSet) gebunden ist und eine entsprechende ComboBox an eine bestimmte Spalte derselben DataSource ebenfalls.
In der Combobox wird der Zellinhalt einer bestimmten Spalte der Zeile mit dem Marker aus dem DataGridView angezeigt. Der in der ComboBox angezeigte Text
aendert sich sozusagen synchron zu der Zeile, die den Marker traegt.

Ich wuerde jetzt gerne programmatisch sozusagen den Marker selbst auf eine neu eingefuegte Zeile setzen, um das neue Element in der ComboBox zur Anzeige zu bringen.

Weiss jemand Rat ?

Vielen Dank im Voraus

Christoph

18.09.2009 - 16:16 Uhr

Hallo vbprogger,

waere selbst nicht draufgekommen.

Vielen Dank Dir & schoenes WE

Christoph

18.09.2009 - 14:26 Uhr

verwendetes Datenbanksystem: <SQL2000>

Hallo zusammen

ich moechte eine Abfrage an einen Verbindungsserver richten, moechte aber den Servernamen in einer Variablen uebergeben

z.B.


DECLARE @LINKEDSERVERNAME varchar(80);
SELECT @LINKEDSERVERNAME = SERVER FROM ServerTabelle WHERE SERVER = 'test';

SELECT * FROM @LINKEDSERVERNAME.datenbank.dbo.tabelle;

Wenn ich den Servernamen des Verbindungsservers dirkt angebe klappt es wunderbar.

 SELECT * FROM test.datenbank.dbo.tabelle;

Der Einsatz von eckigen Klammern oder Hochkommata hat
leider auch nichts gebracht.

Weiss jemand Rat ?

Vielen Dank im Voraus

09.09.2009 - 09:38 Uhr

Hallo Flo,

ich kann es zwar jetzt gerade nicht testen,

aber das klingt genau nach dem, wonach ich gesucht habe.

Vielen Dank Dir.

Grüße

Christoph

09.09.2009 - 09:14 Uhr

OTYPES ist eine bereits erstellte Tabelle.

BEGIN und END werde ich weglassen, wenn ich etwas sattelfester bin,
im Moment hilft es mir in Punkto Uebersichtlichkeit.

09.09.2009 - 08:46 Uhr

verwendetes Datenbanksystem: <SQL2000>

Hallo zusammen,

ich moechte beim Anlegen einer Datenbank jeden Schritt vor dessen Ausfuehrung
pruefen, ob das zu erzeugende Objekt bereits existiert.
Das klappt bei Tabellen und Spalten auch perfekt wie z.B.

IF NOT EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'OID')
BEGIN 
	CREATE TABLE OID(OID int IDENTITY(1,1) PRIMARY KEY(OID), OTYPE int)
END;

aber wenn ich dasselbe fuer einen Trigger versuche


IF NOT EXISTS (SELECT name FROM sysobjects WHERE name = 'trOTYPESinsert')
BEGIN
	CREATE TRIGGER trOTYPESinsert ON OTYPES INSTEAD OF INSERT AS BEGIN INSERT INTO OID(OTYPE)VALUES(0) END;
END;

Bekomme ich

Server: Msg 156, Level 15, State 1, Line 19
Incorrect syntax near the keyword 'TRIGGER'.

Wie muss ich das fuer den Trigger anstellen ? Scheint wohl ein irgendwie
anders gelagerter Fall zu sein.

26.02.2009 - 09:40 Uhr

Hab´s gefunden
Jede Spalte erlaubt die UserSort-Eigenschaft, mit deren Hilfe man die
gasamte Tabelle sortieren kann.

Wer lesen kann....

22.02.2009 - 15:46 Uhr

verwendetes Datenbanksystem: ACCESS 2000

Hallo Zusammen,

ich verwende einen Microsoft.Reporting.WinForms.ReportViewer um einen Report
darin anzuzeigen, der eine Tabelle darstellt.
Dessen (derzeit einzige) Datenquelle ist eine System.Windows.Forms.BindingSource ist, deren DataMember ist eine Abfrage eines bestehenden DataSet.

Soweit alles sehr schoen. Ich scheitere jetzt nur an der Sortierung der Ausgabe.
Ich wuerde gerne den Inhalt des Reports nach einer bestimmten Tabellenspalte sortiert ausgeben.
Das Sortieren der BindingSource ( BindingSource.Sort = "Spaltenname ASC" ) hat leider auch nicht funktioniert, obwohl die BindingSource die Eigenschaft "Sort" korrekt uebernimmt.

Wie macht man das denn im Report,
das geht ja ganz bestimmt, aber ich komm einfach nicht drauf.

18.09.2008 - 08:14 Uhr

Hallo Mr. Sparkle,

vielen Dank Dir fuer Deine sehr ausfuehliche und sorgfaeltig formulierte
Antwort.
Ich werde das mit den Bitmaps auch ausprobieren, ich bin nur diese und naechste Woche beruflich so engagiert, dass ich das fruehestens in 2 Wochen angehen kann,
werde mich dann aber auf alle Faelle wieder melden.

Die Bauelement-Polygone haben nur eine Farbe.
Lediglich die Leiterplatte hat eine bzw. maximal zwei, grosse Texturen.

Man verwendet dort einfach ein gescanntes Bild der (im Rohzustand ja voellig ebenen) Leiterplatte und benutzt dieses als "Hintergrund" um die einzelnen
Bestueckpositionen zu verifizieren.

Ich kann Dir das Programm auch gerne schicken, allerdings werden die Daten,
die es darstellt, also die Leiterplatte, Bauelemente, Gehaeuseformbeschreibungen
von einer Schnittstelle ausgelesen, welches wiederum diese Daten aus einer Datenbank liest und entsprechend aufbereitet zur Verfuegung stellt.
Dieses Interface ist lizenzpflichtig,
und diese Lizenz kann ich leider nicht weitergeben.

Grüße an Dich

Christoph

13.09.2008 - 12:46 Uhr

Hallo MrSparkle,
vielen Dank fuer Deine Antwort.
Ich arbeite bereits mit Display-Listen und das hat echt sehr viel gebracht.

Ich habe mittlerweile auch festgestellt, dass meine Performance-Probleme
in erster Linie von meinen Bauelemente-Beschriftungen verursacht werden.
Ich benutze wglUseFontOutlines, um einen entsprechenden Zeichensatz zu erstellen und anschliessend werden ca. 4000 Schriftzuege mit jeweils
ca. 4-6 Zeichen auf die Bauelemente geschrieben.
Ich werde versuchen, das Zeichnen der Beschriftungen waehrend des Zoomens / Rotierens / Verschiebens abzuschalten.

Ich habe auch festgestellt, dass die Anzahl meiner Elemente fuer die Performance gar nicht so entscheidend ist,
sondern vielmehr auf welche Flaeche sich diese Elemente verteilen.
Das hat mich sehr ueberrascht, ich war der Meinung, nur die Anzahl der
zu zeichnenden Elemente spielt da eine Rolle.

Aber die Frage interessiert mich jetzt trotzdem noch:
Ist es performanter, eine Rechtecksflaeche aus einem
TRIANGLE_STRIP (bestehend aus 2 Elementen) aufzubauen,
als aus 1 QUADS ?
Oder ist das so generell ohne weiteren Kontext gar nicht zu beantworten ?

07.09.2008 - 20:11 Uhr

Hallo,

ich arbeite zur Zeit an einer OpenGL-Anwendung zur Darstellung von Bauelementen auf einer Leiterplatte.

Diese bis zu 4000 Bauelemente sind in der Regel Quader, die ich aus
5 GL_QUADS sowie einem Polygon (Polaritaetskennzeichen) aufbaue.

Die Bauelemente packe ich in display-listen.

Das ganze wird bereits sehr langsam, wenn ich mit der Maus zoome oder rotiere.

Mich wuerde nun interessieren, ob es aus Performance-Gruenden ratsam ist,
diese vielen Quader anstelle von GL_QUADS aus GL_TRIANGLE_STRIPS
aufzubauen.

Vielen Dank im voraus.

Christoph

24.08.2008 - 20:43 Uhr

Hallo STF-DIR,

ich habe Deinen Code bei mir eingebaut und er funktioniert einwandfrei,
das einzige, was ich nicht hinkriege ist das Einstellen der Schriftgroesse.

Dein Post hat mir echt weitergeholfen, ich haette das alleine nie hingekriegt.

Grüße

Christoph

12.08.2008 - 12:09 Uhr

Hallo GMOLD,

vielen Dank, das habe ich mir fast schon gedacht,
dass sich die Queries nicht ausgehend vom Connection-String anpassen.

Es wuerde vermutlich gehen, wenn die SQL-Syntax zwischen den beiden
Systemen identisch waere, was sie wohl nicht ist.

Ich werde das Problem eben mit 2 verschiedenen Versionen loesen,
eine fuer ACCESS und eine fuer den SQL-Server,
und der Benutzer waehlt bei der Installation aus, welche Datenbank er haben moechte.

Grüße und nochmals vielen Dank

Christoph

11.08.2008 - 21:03 Uhr

verwendetes Datenbanksystem: Access 2000 / SQL2000

Hallo,

ich habe meine Anwendung auf Basis einer MS-Access 2000 Datenbank
programmiert, mit dem Designer ein Dataset definiert und das läuft auch alles problemlos.

Nun ist meine Idee, anstelle der Access-Datenbank koennte man doch einfach wahlweise eine Verbindung zu einem SQL-Server herstellen, der ebenfalls eine entsprechende Datenbank enthaelt.

Nach einer Aenderung der Verbindungszeichenfolge funktioniert das lesend auch
hervorragend, nur wenn ich ueber einen TableAdapter eine Tabelle oder auch nur eine Zeile aktualisieren will, bekomme ich die Fehlermeldung
"Line 1: Incorrect Syntax near '`'"

Habe ich da die Flexibilitaet des Dataset ueberschaetzt oder sollte das eigentlich gehen ?

08.06.2008 - 11:40 Uhr

Hallo MichlG,

Tausend Dank Dir, konnte dank Deines Posts mein Problem loesen.

Ist ja doch um einen Schnaps aufwaendiger als z.B. HeaderCell.SetIcon,
und nach sowas war ich eigentlich auf der Suche.

Grüße zurück

Christoph

07.06.2008 - 17:44 Uhr

Hallo,

ich versuche in der RowHeaderCell einer Zeile in einem DataGridView
ein Symbol bzw. Icon evtl. zusaetzlich zu einem Text anzuzeigen.
Das mit dem Text bekomme ich hin, aber nicht mit dem Icon.

Es ist bestimmt laecherlich einfach, aber ich find´s einfach nicht.

Vielen Dank fuer einen kleinen Tip.

Christoph

26.04.2008 - 18:50 Uhr

Also auch von mir vielen Dank,

ohne Deinen Beitrag waere ich auch verzweifelt.

Es ist aus meiner Sicht (Amateur) echt schwierig nachzuvollziehen, warum
dieses maechtige Tool DataSet und zugehoerige DataTableAdapter um eine
derart wichtige Funktionalitaet beschnitten sind.

01.03.2008 - 18:34 Uhr

Im DataGridView.Sorted-Event kann ich die erforderlichen Manipulationen zwar mit
sehr viel Aufwand aber immerhin durchfuehren, so dass zumindest das Ergebnis passen wuerde

        void dataGridView_inventar_Sorted(object sender, EventArgs e)
        {
            //Nach dem Sortieren voruebergehend alle Zeilen auf Frozen = false setzen
            //da sich sonst keine neue Zeile bei Index 0 einfuegen laesst
            foreach (DataGridViewRow aktuelle_zeile_dataGridView_inventar in dataGridView_inventar.Rows)
            {
                aktuelle_zeile_dataGridView_inventar.Frozen = false;
            }

            //Die Inhalte der Filterzeile merken 
            merker_filter_inventarnummer = (string)aktuelle_filterzeile_dataGridView_inventar.Cells["Inventarnummer"].Value;
            merker_filter_materialnummer = (string)aktuelle_filterzeile_dataGridView_inventar.Cells["Materialnummer"].Value;
            merker_filter_materialkurztext = (string)aktuelle_filterzeile_dataGridView_inventar.Cells["Materialkurztext"].Value;
            merker_filter_materialklasse = (string)aktuelle_filterzeile_dataGridView_inventar.Cells["Materialklasse"].Value;
            merker_filter_auftragsnummer = (string)aktuelle_filterzeile_dataGridView_inventar.Cells["Auftragsnummer"].Value;
            merker_filter_eingebaut = (string)aktuelle_filterzeile_dataGridView_inventar.Cells["Eingebaut"].Value;
            merker_filter_heimatlagerort = (string)aktuelle_filterzeile_dataGridView_inventar.Cells["Heimatlagerort"].Value;
            merker_filter_heimatlagerplatz = (string)aktuelle_filterzeile_dataGridView_inventar.Cells["Heimatlagerplatz"].Value;
            merker_filter_aktueller_lagerort = (string)aktuelle_filterzeile_dataGridView_inventar.Cells["Aktueller_Lagerort"].Value;
            merker_filter_aktueller_lagerplatz = (string)aktuelle_filterzeile_dataGridView_inventar.Cells["Aktueller_Lagerplatz"].Value;


            // Eine Kopie der aktuelle_filterzeile_dataGridView_inventar bei Index 0 einfuegen
            dataGridView_inventar.Rows.InsertCopy(aktuelle_filterzeile_dataGridView_inventar.Index, 0);

            // Die aktuelle_filterzeile_dataGridView_inventar aus dem dataGridView entfernen
            dataGridView_inventar.Rows.Remove(aktuelle_filterzeile_dataGridView_inventar);
            
            // Die aktuelle_filterzeile_dataGridView_inventar mit der eben bei Index 0 eingefuegten Kopie belegen
            aktuelle_filterzeile_dataGridView_inventar = dataGridView_inventar.Rows[0];
            
            // Die aktuelle_filterzeile_dataGridView_inventar einfrieren
            aktuelle_filterzeile_dataGridView_inventar.Frozen = true;

            // Die Werte der einzelnen ComboBoxen setzen
            aktuelle_filterzeile_dataGridView_inventar.Cells["Inventarnummer"].Value = merker_filter_inventarnummer;
            aktuelle_filterzeile_dataGridView_inventar.Cells["Materialnummer"].Value = merker_filter_materialnummer;
            aktuelle_filterzeile_dataGridView_inventar.Cells["Materialkurztext"].Value = merker_filter_materialkurztext;
            aktuelle_filterzeile_dataGridView_inventar.Cells["Materialklasse"].Value = merker_filter_materialklasse;
            aktuelle_filterzeile_dataGridView_inventar.Cells["Auftragsnummer"].Value = merker_filter_auftragsnummer;
            aktuelle_filterzeile_dataGridView_inventar.Cells["Eingebaut"].Value = merker_filter_eingebaut;
            aktuelle_filterzeile_dataGridView_inventar.Cells["Heimatlagerort"].Value = merker_filter_heimatlagerort;
            aktuelle_filterzeile_dataGridView_inventar.Cells["Heimatlagerplatz"].Value = merker_filter_heimatlagerplatz;
            aktuelle_filterzeile_dataGridView_inventar.Cells["Aktueller_Lagerort"].Value = merker_filter_aktueller_lagerort;
            aktuelle_filterzeile_dataGridView_inventar.Cells["Aktueller_Lagerplatz"].Value = merker_filter_aktueller_lagerplatz;

        }//private void dataGridView_inventar_Sorted(object sender, EventArgs e)
01.03.2008 - 16:44 Uhr

Hallo,
ich moechte in einem programmatisch gefuellten DataGridView die erste Zeile
mit DataGridViewComboBoxCells verwenden, um eine fuer jede Spalte auswaehlbare Filterfunktion zu realisieren.
Dazu moechte ich, dass diese betreffende Zeile immer als erste Zeile im DataGridView erscheint.
Mit der Eigenschaft

filter_zeile.Frozen = true; 

kann ich bereits das Scrollen dieser Zeile verhindern, aber leider nicht das Sortieren.
Kann ich diese Zeile oben "festkleben", ohne die Sortierfaehigkeit der gesamten
Tabelle zu opfern ?

Vielen Dank im Voraus

Christoph

20.02.2008 - 11:28 Uhr

Werd ich mir besorgen,

vielen Dank Robert

20.02.2008 - 10:53 Uhr

Hallo Robert,

ich wusste ja, es ist ganz einfach.

Vielen Dank Dir.

Kennst Du zufaellig ein gutes Buch dazu,
das einem hilft, den Einstieg in diese Besonderheiten zu erleichtern ?

Beste Grüße & nochmals danke

Christoph

20.02.2008 - 10:41 Uhr

Ich versuche derzeit eine Applikation fuer ein Pocket-PC-2003-Geraet zu schreiben, ich verwende VS2005 mit dem entsprechenden
Windows Mobile 5.0 Pocket PC SDK.
Wenn ich nun ein Form verwende, fehlen mir in den Eigenschaften ein paar Dinge, die ich, nun ja, "gewohnt bin", z.B. Form.Cursor,
um z.B. einen Cursors.WaitCursor anzuzeigen.
Ich bin ziemlich sicher, dass es da eine Moeglichkeit gibt, finde sie aber nicht.
Sicher gibt es auch irgendwo ein deutschsprachiges Forum fuer C# auf Mobile-Devices, da waere ich auch fuer einen Tip dankbar.

Vielen Dank

Christoph

25.11.2007 - 17:34 Uhr

Hallo blackcoin,

tausend Dank, das wars natuerlich.
Ich haette noch ewig gesucht

Grüße

Christoph

25.11.2007 - 13:04 Uhr

Hallo,

In einem Formular befinden sich mehrere Comboboxen und eine Textbox.
Ich moechte verhindern, dass der Benutzer ein ausgewaehltes Feld einer
ComboBox editieren kann. Man soll auswaehlen koennen, aber nicht das Feld editieren. Am liebsten waere mir, wenn man verhindern koennte, dass die betreffende ComboBox den Tastaturfokus ueberhaupt bekommt.
Ich koennte nun einen Eventhandler GotFocus dazu benutzen,
um den Focus sofort wieder woanders hinzusetzen, aber ich denke, das geht schöner, komme nur nicht drauf.
Die Eigenschaft


myComboBox.CanFocus

ist leider schreibgeschuetzt.

Weiss jemand Rat ?

Vielen Dank vorab

29.08.2007 - 21:16 Uhr

Hallo Herbivore,

genau das wars. Ich habe noch im Form KeyPreview = true gesetzt und ich denke
jetzt komm ich da weiter.

Ich waere von selbst nicht draufgekommen, werde aber versuchen, in der Doku
herauszufinden, was es mit der "KeyPrewiew" so auf sich hat.

Vielen Dank Dir, ging ja schneller als die Feuerwehr, und gelöscht hat´s auch gleich.

29.08.2007 - 20:36 Uhr

Hallo,

ich habe ein Form mit mehreren GroupBoxen und einige dieser GroupBoxen beinhalten ein oder mehrere TextBox-Elemente.

Ich wuerde nun gerne die Funktionen TextBox.copy() undTextBox.paste(), die,
sofern via Standard-Kontextmenue oder mit der Kombination Shift+Einfuegen
aufgerufen, auch perfekt funktionieren, mit den, tja nun, "gewohnten"
Tastenkombinationen aufrufen.
Die Eigenschaft TextBox.ShortcutsEnabled = true;
Ich habe nun versucht, einen KeyEventHandler zu implementieren

aktuelles_element.textbox.KeyDown +=new KeyEventHandler(textbox_KeyDown);
...
      void  textbox_KeyDown(object sender, KeyEventArgs e)
      {
           bool haltepunkt = true;             
       }//void  textbox_KeyDown(object sender, KeyEventArgs e)

Jeder Tastendruck wird an den Eventhandler weitergeleitet,
auch wenn mehrere Tasten gleichzeitig, also in Kombination gedrueckt sind,
und die betreffende TextBox den Focus besitzt.
Nur wenn ich die (leider gerade die) Kombination aus STRG+C oder STRG+V
drücke, wird der EventHandler eben NICHT aufgerufen.

Meine Vermutung ist, daß genau die Kombinationen STRG+C oder/und STRG+V woanders,wie soll ich sagen, gefiltert werden und denke eigentlich, daß ich diesen EventHandler gar nicht braeuchte, wenn der Event ankommen wuerde.
Ich vermute das, weil in einem anderen Form, das nur aus einer (1) TextBox
und 2 Buttons besteht, funktioniert das Kopieren / Einfuegen mit den Tastenkombinationen STRG+C oder STRG+V, ohne Federlesen.

Ich habe bereits versucht, den KeyEventHandler sozusagen eine Ebene hoeher,
in der GroupBox oder dem Form selbst zu implementieren, aber da kam ueberhaupt kein KeyEvent an, was mich eigentlich auch nicht verwundert.

Kann ich herausbekommen, was mit dem Event passiert, wenn ich nicht weiss,
wer ihn bekommt ?

Oder liegt es nahe, dass ich im Aufbau meines Formulars unguenstig vorgegangen bin?

Vielen Dank im Voraus

21.08.2007 - 21:16 Uhr

Hallo herbivore,

vielen Dank, ich habe nach einer Funktion wie dieser gesucht,
sie aber leider nicht gefunden.
Ich habe noch nicht viel Erfahrung mit dem Visual Studio, hatte bisher aber gedacht, dass in der Auswahlbox alle ein bestimmtes Objekt anwendbare
Funktionen aufgeführt sind, fuer die Testbox konnte ich die Funktion ResetBackColor aber nicht finden. Ist sie vielleicht geerbt ? Und deshalb nicht sichtbar ?
Haette ich selbst drauf kommen koennen ? Ich meine, kannst Du mir eine Strategie empfehlen, wo ich evtl. grundsaetzlich suchen kann, wenn ich eine Funktion vermisse ? Wie man sieht, ist sie ja doch da !!

Vielen Dank nochmal

20.08.2007 - 21:10 Uhr

Hallo,

ich aendere die Hintergrundfarbe einer Textbox
mit z.B.

 TextBox.BackColor = Color.Yellow;

waehrend die Textbox aktiv ist.
Spaeter wird die Textbox mit

TextBox.Enabled = false;

deaktiviert.
Das einzige, was daran nicht so funktioniert, wie ich es gerne haette,
ist, dass nach der Deaktivierung dieser Textbox die Hintergrundfarbe erhalten bleibt, die zuletzt gesetzte Hintergrundfarbe, waehrend alle anderen Textboxen,
deren Hintergrundfarbe nicht manuell geaendert wurden, im deaktivierten Zustand
grau erscheinen.

Und das beste am Schreiben eines Beitrages ist, dass man nochmal ueber sein Problem nachdenkt, und einem waehrend des Schreibens einfaellt,
dass es ja noch eine Nicht-Farbe System.Drawing.Color.Empty gibt,
mit der man das Problem einfach durch ein simples

TextBox.BackColor = System.Drawing.Color.Empty;

lösen kann.

Ich bedanke mich bei mir selbst und freue mich, wenn diese Zeilen noch jemand anderem weiterhelfen.

Christoph Oeckl