Laden...

Forenbeiträge von hansgerber Ingesamt 23 Beiträge

08.06.2011 - 09:53 Uhr

Eine Spalte eines DatagridViews beinhaltet Artikelnummern.
Wenn ich nach diesen sortiere, dann geschieht (erwartungsgemäss) folgendes :

1
10
11
....
19
2
21
22
...

Ich kann das umgehen, wenn ich "01" statt "1" schreibe.
Wenns aber dreistellig wird, sieht "001" irgendwie doch zu blöde aus.

Da gibts doch aber sicher eine Möglichkeit, das ganze integermässig zu sortieren, oder?

Hans

19.05.2011 - 15:08 Uhr

Ich geb zu, das Thema war schon oft hier.
Ich habe die Suche bemüht und die Beispiele durchgespielt, auf die hier verwiesen wird.
U.a. das "Passing Data Between Forms".

Den Vorgaben folgend habe ich ein Delegate integriert und realisiert.
Das Delegate wird "gesendet" und "empfangen", von daher habe ich wohl nichts falsch gemacht.

Mein Problem ist aber folgendes :
Auf meinem Hauptfenster ist eine ComboBox, die Messeinheiten anzeigt, bzw. auswählen lässt.
In einem separaten Settings-Fenster ist eine ziemlich entsprechende Box, die das ganze als Default speichern lässt, damit beim nächsten Start die richtige Einheit erscheint (funktioniert auch).

Ich wollte nun, dass die ComboBox des Hauptfensters beim Schliessen des Settingsfensters die neue Einstellung gleich mal übernimmt.
Das Hauptfenster ist ja aber die ganze sichtbar, also nix wie in den Beispielen frmMain.Show aufrufen und tataa.
Somit habe ich nun den Index der ComboBox zwar geändert, sichtbar ändert sich an der Box aber nichts, nichts wird aktualisiert.

Woran kann das liegen?

Vielen Dank für jeden Tip!
Hans

04.03.2011 - 11:43 Uhr

Hallo,

in meinem aktuellen Projekt lese ich etliche Parameter, die ich für Berechnungen benötige aus einer Xml-Datei ein und weise diese zu :


XmlReader reader = xmlReader.Create("c:\datafile.xml");

while (reader.read()) 
{
if (reader.NodeType == XmlNodeType.Element)
{
switch (reader.Name)
{
case "Temperature":
temp = reader.ReadElementContentAsDouble());
....
break;

usw...

Das funktioniert wunderbar. Wenn ich nun bspw. die geänderte Temperatur als künftigen Default-Wert abspeichern will, muss ich doch sicher nicht die komplette Datei neu anlegen, sondern kann den Wert doch gezielt ändern?

Kann mir das jemand zeigen, wie das am einfachsten geht? In meinen Unterlagen sieht es mit Xml ziemlich mau aus.

Vielen Dank
Hans

10.02.2011 - 15:04 Uhr

Spitzenklasse - jetzt funktionierts so, wie es sollte.

Vielen Dank für Eure Hilfe.

Hans

10.02.2011 - 14:29 Uhr

Auh, ich ahne was.
Durch Klicken eines separaten Buttons klappt es in der Tat.

Diesen Extra-Klick wollte ich mir sparen und die Abfrage unmittelbar an den Auswähl-Klick anhängen. Die Abfrage habe ich ins CellContentClick-Ereignis geschrieben.

Kann es sein, dass das nicht geht?
Ist CellContentClick hierfür die falsche "Adresse"?

Hans

10.02.2011 - 13:02 Uhr

Also, wenn ich Boolean zugrundelege und z.B. schreibe :

Boolean sel = Convert.ToBoolean(dgv[1,0].Value);

da kann ich mir die Finger wundklicken, der Wert für "sel" bleibt immer "false".
Was mache ich da falsch?

Hans

10.02.2011 - 12:07 Uhr

In einem ungebundenen DGV habe ich eine Spalte als CheckBoxColumn definiert.
Das An- bzw. Abwählen ergibt die Selektion, mit der dann weiter gearbeitet wird.

So weit, so gut. Aber wie frage ich den Status ab? Selected ist es nicht, das habe ich schon rausgefunden und ein "Checked" finde ich seltsamerweise auch nicht.

Wer kann mir da mal auf die Sprünge helfen? X(

Vielen Dank!
Hans

09.02.2011 - 14:57 Uhr

Hallo,

wie kann ich eigentlich im Quellcode einer existierenden Spalte eines DataGridViews den ColumnType CheckBoxColumn zuordnen (allgemein ändern)?
Wahrscheinlich ist das wieder so einfach, dass ich die Hände überm Kopf zusammenschlage...

Besten Dank!
Hans

01.02.2011 - 09:07 Uhr

Irgendwie ist mir das fast peinlich, weil ich dachte, das wäre eine ganz einfache Sache. Fakt ist leider, dass ich irgendwas mit den Bindings falsch mache und meine TextBox nicht das anzeigt was ich will.

Also, für ein Berechnungsprogramm lese ich Zahlenwerte aus einer Datei ein, die für die Berechnungen benötigt werden. Ich erstelle ein Objekt, dass all diese Werte aufnimmt und will diese Zahlenwerte nun mit dem Inhalt einer TextBox verknüpfen.

Soll heissen, wenn der Benutzer im Eingabefeld "Starttemperatur" den Wert 60 eingibt, soll automatisch der Objekt Wert "parameter.startTemp" auf 60 gesetzt werden.
Andersherum soll, wenn sich "parameter.startTemp" ändert die Textbox automatisch den neuen Wert anzeigen.
Es scheitert jedoch schon daran, dass ich trotz erfolgter Zuweisung der Objektwerte beim Programm-Start im Textfeld "0" angezeigt bekomme. X(

Hans

25.01.2011 - 08:49 Uhr

Ja schon, aber wie mache ich das am besten?

25.01.2011 - 08:41 Uhr

Hallo,

ich bin bezüglich Xml noch ziemlich unerfahren, daher bitte ich um Nachsicht, wenn die Frage einigen zu simpel erscheinen mag. Leider schweigt sich mein dickes C#-Buch über xml fast völlig aus, so dass ich es über diese Forums-Anfrage versuche.

Also, ich habe ein DataGridView, dass ich mit dem Inhalt einer xml-Datei befüllen möchte. Ich habe ein DataSet angelegt, dieses dann DataGridView.DataSource zugewiesen. Das hat geklappt, nur werden jetzt alle Datensätze angezeigt, was ich nicht möchte. Ich möchte eine selektive Anzeige :

Die xml-Datei sieht in etwa so aus :

<Artikel_Table> 
  <buch>
     <author>Gerd Mueller</author>
      ...weitere Eigenschaften des Buches
  </buch>
  <dvd>
       <titel>Titanic</titel>
       ..weitere Eigenschaften der DVD
  </dvd>
 .... usw

Neben Buch und DVD sind noch weitere Artikelgruppen vorhanden.
Wenn ich nun im Quellcode die DataMember-Eignschaft auf "buch" oder "dvd" setze, wird nur das angezeigt. Wie schaffe ich es aber, dass bspw. "buch" und "dvd" angezeigt werden, aber z.B. die Artikelgruppe "video" nicht?
Kann ich das mit dieser xml-Struktur oder muss ich da anders vorgehen?

Vielen Dank im Voraus!
Hans

12.01.2011 - 12:52 Uhr

Hmm stimmt, das war so gut integriert, dass ich das gar nicht gemerkt habe, sorry.

Hans

12.01.2011 - 10:45 Uhr

DataGridView -> Column -> ColumnType = TreeGridColumn

12.01.2011 - 10:30 Uhr

Danke für die Antworten.
Nach langem Hin und Her bin ich drauf gekommen, dass ein DataGridView für mich eine Alternative sein könnte, wenn eine Spalte ein "TreeGridColumn" ist.

Vielleicht kann mir jemand auf die Sprünge helfen, wie ich das befülle.
Textbasierte Columnen zu befüllen ist kein Problem, aber mit welchem Befehl fülle das TreeGridColumn innerhalb des DataGridViews?

Hans

11.01.2011 - 12:35 Uhr

Habs fast befürchtet.
Gibts denn Alternativen, die das können, ohne einen in den Ruin zu treiben?

Hans

11.01.2011 - 12:24 Uhr

Ist es eigentlich möglich, in einem TreeView mit CheckBoxes die erste Ebene davon auszunehmen? Sprich, Ebene 0 soll ohne CheckBoxen dargestellt werden und damit nicht mehr selektierbar sein.

Hans

28.11.2008 - 13:49 Uhr

😁 👍

Jetzt gehts,
der Name war in der Tat suboptimal, zumal aus "Berechnungen 2.0" des Projektnamens der Namespacebzeichner "Berechnungen_2._0" wird.

Diesen eingefügt klappt alles wunderbar.

Danke für Eure Hilfe !!
Hans

28.11.2008 - 13:08 Uhr

"Leider" ja, leider im Sinne der möglichen Fehlerursache. Wurde von VS beim Anlegen der Dateien ja auch selbsttätig gemacht.

Hans

28.11.2008 - 13:01 Uhr

Nee, leider nicht.
"Berechnungen 2.0" ist der Projekt / programmname. Laut Buch gehört der auch dazu. Ändert aber nix am Resultat. Ob mit "Berechnungen 2.0" oder ohne, die Fehlermeldung bleibt.

Hans

28.11.2008 - 12:26 Uhr

Irgendwie sehe ich den Wald vor lauter Bäumen nicht, will sagen, ich hab den Code jetzt zig-mal durchgeschaut, hab die Suche benutzt und hab das dicke Lehrbuch neben mir, trotzdem krieg ich die Fehlerursache nicht raus.

Also, ich lokalisiere mein Projekt (Deutsch, Englisch, Spanisch). Die GUI habe ich erfolgreich bewältigt, ich habe Form1.resx, Form1.de.resx und Form1.es.resx erzeugt, ausgetestet und es funktioniert.

Nun sollten noch sämtliche Hinweise, Warnungen & Fehler lokalisisert vorliegen. Nach dickem Lehrbuch also gemäss "Hinzufügen - Neues Element... - Ressourcendatei" getätigt und die Dateien "language.resx", language.de.resx" sowie "language.es.resx" angelegt und mit den entprechenden Strings gefüllt.

Dann im Code (gemäss Buch) eingefügt :

using System.Resources;

public class Form1 : Form {
  private ResourceManager rm = new ResourceManager("Berechnungen 2.0.language", typeof(Form1).Assembly);
.....
}

Eine lokalisierte Fehlermeldung sollte sich doch jetzt mittels :

 MessageBox.Show(rm.GetString("invalidInput"));

aufrufen lassen.

Allerdings bekomme ich jedesmal eine "MissingManifestResourceException" mit dem Wortlaut "Could not find anyresources appropraite.....Make sure "Berechnungen 2.0.language.resources"was correctly embedded...

Irgendwas beim Einbinden der Resourcen scheint also noch zu fehlen oder falsch zu sein, aber was ??

Hans

06.11.2008 - 15:11 Uhr

Besten Dank, jetzt funktioniert es.
Es war mir nicht klar, dass das mit der ArrayList so nicht geht.

Hans

06.11.2008 - 14:21 Uhr

Sorry, aber ich kapiers noch nicht.
Angenommen ich habe 20 Objekte der Klasse Daten in die ArrayList aufgenommen, dann habe ich doch nach den ganzen "Add"-Vorgängen alleArtikel[0] bis alleArtikel[19] vorliegen.

Wenn ich jetzt - wie Du schreibst - für den Eintrag mit Index 5
Daten element = alleArtikel[5];

eingebe, bekomme ich eine Fehlermeldung

"Der Typ object kann nicht implizit konvertiert werden....

Hans

06.11.2008 - 13:48 Uhr

Hallo,

bin als Quereinsteiger ziemlich neu in C# und kämpfe gerade mit Arraylists.

Für meine Datenstruktur habe ein Objekt erzeugt, dass beispielhaft in etwa so aussieht :

public class Daten
{
  String name;
  int preis, artNr, menge;
 .....
}

Beim Programmstart lese ich eine Textdatei mit diesen Werten ein und kreiere so eine grosse Anzahl an Daten-Objekten. Diese möchte ich nun in ein Arraylist einfügen.

Daten Angaben = new Daten();
 Arraylist alleArtikel = new Arraylist();
 //einlesen und zuweisen
 Angaben.name = "irgendwas;
 Angaben.preis = 10.50;
 .....
 alleArtikel.Add(Angaben);
...

Soweit geht es. Aber wie kann ich aus der Arraylist "alleArtikel" z.B. den Namen des x-ten Eintrages zurückholen ? X(
Ohne dass ich das auf die Reihe bringe brauche ich gar nicht weitermachen...

Danke für jeden Tipp
Hans