Laden...

Forenbeiträge von sra Ingesamt 230 Beiträge

21.11.2005 - 13:07 Uhr

Ein Problem habe ich aber noch.

Denn ich kann zwar mit:

((int)this.myDS.Tables["Hardware"].Rows[this.myHTI.Row].ItemArray[0])

die ID des x-ten Eintrags auslesen, mache dies aber vom DataSet und nicht von DataGrid.

Das hat den Nachteil, dass ich eine falsche ID bekomme, sobald ich im Datagrid irgendetwas sortiere (Da dann plötzlich nicht mer "Motherboard" sondern "Diskettenlaufwerk" der 3te Eintrag im Datagrid ist, im Dataset jedoch immernoch "Motherboard" an dritter Stelle kommt.)

Kann ich das noch irgendwie ausbügeln?`

edit: mit dataGrid.CurrentRowIndex habe ich logischerweise das selbe Problem

21.11.2005 - 12:27 Uhr

okokok - ich habe gerade nochmal deinen Post gelesen und da steht die Antwort ja schon 🙂

Danke

21.11.2005 - 12:23 Uhr

Danke vielmal... so ist es gegangen:

this.myDS.Tables["Hardware"].Columns["Id"].ColumnMapping = System.Data.MappingType.Hidden;

Nun habe ich aber noch ein Problem, und zwar weiss ich nicht wie ich Daten direkt aus einem Datagrid auslese. Ich weiss in welcher Reihe der User geklickt hat, sehe aber keinen Weg mit dieser Info die versteckte Id dieser Zeile auszulesen.

Weiss das vielleicht jemand? 🙂

21.11.2005 - 11:23 Uhr

Hallo zusammen

Ich bin gerade an einem kleinen Tool, das mir alle Einträge aus einer DB ausliest und in ein Datagrid füllt. Dann per Doppelklick auf einen Datensatz soll ein weiteres Fenster aufgehen, das dann die Details dazu anzeigt.

Das funktioniert auch schon ganz gut - das einzige Problem das ich habe ist den richtigen Eintrag im Detailform anzeigen zu lassen (bisher zeige ich immer den mit der Id=1 an).

Wahrscheinlich werde ich es noch schaffen auszulesen, welche Row der User angeklickt hat (Stichwort: HitTestInfo), wo ich aber im Moment überfordert bin, das ist die Spalte ID.

Die ID ist das einzige Element jedes Datensatzes, das Unique ist. Allerdings zeige ich dem User die ID im Dategrid nicht an (Tablestyles). Gibt es einen weg trotzdem an diese Information ranzukommen?

Danke im Voraus
sra

16.11.2005 - 16:42 Uhr

Danke für die schnelle Antwort.

Was ich will ist jedoch weniger eine direkte Kommunikation über eine dritte Klasse, als viel mehr eine monotone kommunikation, in der das form2 auf gewisse member des form1 zugreifen kann, da die Referenz mitgegeben wird (an form2).

Alternativ könnte ich natürlich auch selber eine solche Lösung basteln:

//Form2:
public form ParentForm;
//Form1:
this.frmDetails.ParentForm = this;

Das finde ich aber nicht sehr elegant, da ja Form bereits eine Parent Eigenschaft zur Verfügung stellt.

//edit
@Friedel: Das könnte allerdings sein, dass dieses Parent nur bei MdiChilds (ist die Mehrzahl von MdiChild MdiChilder? 😄) geht. Ich werde es wohl mal mit dem DataSet als Eigenschaft versuchen.

16.11.2005 - 16:18 Uhr

Hallo zusammen

Ich bin gerade an einer kleinen Applikation, welche mehrere Forms haben wird. Nun möchte ich vom einen Form (welches später erst dem user gezeigt wird) auf ein Dataset in der Mainform zugreifen können.

Irgendwo habe ich gelesen, dass man dazu einfach dem zweiten, untergeordneten Form die Property Parent der Mainform geben muss, also:

this.frmDetails.Parent = this;

Das ergibt bei mir jedoch eine ArgumentException mit der begründung "Ein Steuerelement der oberen Ebene kann nicht zu einem Steuerelement hinzugefügt werden."

Der ganze Code in diesem Abschnitt sieht so aus:

frmDetails myDetails;

private void cmDatagridHinzu_Click(object sender, System.EventArgs e)
{
	this.myDetails = new frmDetails();
	this.myDetails.Parent = this;
	this.myDetails.Show();
}

Weiss jemand, was ich noch machen muss?

16.11.2005 - 12:08 Uhr

Ich habe inzwischen herausgefunden, dass der SelectedIndexChanged Event bei den folgenden 2 Zeilen ausgelöst wird:

this.cbKategorie.DataSource = myView; // Ausgabe im Event: System.Data.DataViewManagerListItemTypeDescriptor"
this.cbKategorie.ValueMember = "Kategorien.Name"; // Ausgabe im Event: "System.Data.DataRowView"

Gibt es "Ausweichevents", die wirklich nur dann aufgerufen werden, wenn der User in der ComboBox einen neuen Eintrag auswählt, oder gibt es noch eine andere Möglichkeit?

16.11.2005 - 11:25 Uhr

Ich habe nun die valueMember Property auf "Kategorien.Name" geändert, was keine schöne Lösung ist, aber ansatzweise funkioniert.

Nun habe ich noch das Problem, dass ich das Ganze in einem onIndexChanged Event habe, und dass dieses bereits beim Initialisieren aufgerufen wird und Einträge wie "System.Data.DataViewManagerListItemTypeDescriptor" und "System.Data.DataRowView" ausspuckt, was ich absolut nicht gebrauchen kann.

16.11.2005 - 11:20 Uhr

mit der SelectedValue Property bekomme ich doch den zuvor durch cbKategorien.valueMember gesetzten eintrag, und der ist in meinem Fall die ID. Gibt es noch andere Möglichkeiten?

16.11.2005 - 11:09 Uhr

Hallo zusammen

Eigentlich will ich ja nur ein ganz simples Problem lösen. Ich möchte auf den in der Combobox selektierten Eintrag (also den für den User sichtbaren Text) zugreifen können. Normalerweise geht das ja mit

this.cbKategorien.SelectedItem.ToString()

. Nun habe ich aber das Problem, dass ich die Einträge über dataSource von einem DataSet habe, und wenn ich den Code ausführe bekomme ich als Text in meiner TestMessageBox immer "System.Data.DataRowView".

Kann mir jemand weiterhelfen, bin bestimmt schon 20 Minuten am probieren.

Danke

09.11.2005 - 17:54 Uhr

danke für die antwort

das ist genau das was ich gesucht habe.

09.11.2005 - 16:42 Uhr

Hallo

Ich habe mal eine Frage zum Datagrid. Und zwar möchte ich, dass wenn man da hineinklickt (links UND rechts) die gesamte Zeile markiert wird. Normal ist es ja so, dass nur die entsprechende Zelle markiert wird, und zwar nur bei links, nicht aber bei rechtsklick.

Habt ihr eine Idee, wie ich das einfach machen kann, oder muss ich da gleich von Datagrid erben, und die onClick Events überschreiben (kann man das überhaupt - sind nicht alle Formsachen sealed?)?

Ich hoffe ihr könnt mir helfen

Vielen Dank im Voraus
sra

13.09.2005 - 08:54 Uhr

Yeah - der Hengst 😁

Merci

12.09.2005 - 17:15 Uhr

Nein... das Problem war (wenn ich mich recht erinnere), dass ich die IP Adresse nicht rauslesen konnte (kam nur an die interne IP, also die, welche der PC im Netzwerk hat (10.0....)). Im LAN funktionierte mein Programm also gut, im Internet sobald ein Router dazwischen war nicht mehr, da ich keine IP hatte um überhaupt eine Verbindung zu kriegen.

Wie finde ich die IP heraus, mit welcher ein PC von ausserhalb des Routers ansprechbar ist?

12.09.2005 - 16:04 Uhr

Danke für deine Antwort, das hört sich doch gleich sehr beruhigend an 🙂

Ich werds also mal "ganz normal" versuchen, und mich bei Problemen wieder melden.

Gruss
sra

edit: eine Frage hätte ich da doch noch. Und zwar: wie sieht es aus mit einer Verbindung über das Internet? Bei meinem früheren Programm hatte ich immer Probleme, sobald der Server oder der Client hinter einem Router "versteckt" waren.

12.09.2005 - 15:51 Uhr

Den "Server" entwickelt ein Kollege von mir, an Informationen mangelt es also nicht. 🙂

Ich bin mir aber noch unsicher, wie zum Beispiel das mit dem Handshake geht. In meiner c# zu c# Socketverbindung musste ich einfach einen Socket erstellen, und dem sagen wo er hinhören soll (welchen Port). Hat er dann was gehört, musste ich den eingehenden "Socket" noch akzeptieren und in einem Objekt speichern - fertig war die Verbindung. Da war nichts vom TCP Handshake, was ich machen musste.

Kannst du mir sagen wie das in etwa geht, wie ich auf diese "niedrige" Ebene gelange? Oder hast du mir ein Tutorial für so was?

Danke

btw. Wenn ich den Handshake selber mache, muss ich da auch selber einen Schutz vor SYN-Floods basteln? Oder gibt es da bereits etwas?

12.09.2005 - 14:49 Uhr

Hintergrund: Ich mache gerade ein kleines Netzwerkprogramm. Es sollen Daten auf einen Server und wieder zurück übertragen werden können. Ich habe bereits ein wenig erfahrung damit, da ich schon ein solches Programm auf Basis von Sockets gemacht habe.

Nun ist mein Problem aber, dass der Server diesmal nicht in c# sondern in c programmiert wird. Seht ihr da Probleme, oder habt ihr mir Tips, auf was ich achten muss? Und kann ich so ohne weiteres über Sockets mit dem Server in Kontakt kommen, oder soll ich lieber etwas anderes versuchen?

07.09.2005 - 12:08 Uhr

Wenn du doch weisst, welcher Benutzer im Windows eingeloggt ist (und das Windows Logon schon hinter sich hat), dann weisst du ja auch welcher Benutzer auf deine Applikation zugreift. Oder willst du, dass sich theoretisch auf dem Computer von Hans Muster im Benutzer von Hans Muster jemand anderes für dein Program anmelden kann?

31.08.2005 - 10:09 Uhr

Hallo

Ich habe folgendes Problem. Wenn ich in einer c# Konsolenanwendung mehrere Console.WriteLines habe, und darauf ein Console.Read (oder auch .ReadLine) folgt, dann ignoriert es mein PC zum Teil einfach.

Ich habe das Console.Read natürlich in einer Schleife, um gewährleisten zu können, dass der User keine falsche Eingabe macht. Es kommt nun also vor, dass zuerst dreimal der Befehl Console.WriteLine("Geben Sie einen Menupunkt ein") durchgeführt wird, und erst dann kommt mal der Console.Read() Befehl. Es sieht aus, als ob ich einen zu schnellen Rechner hätte.

do
{
	Console.Write("  Welchen Menupunkt wollen Sie wählen? ");
	menupunkt = Console.Read() - 48;
} while(menupunkt < 0 || menupunkt > 4);

Die Ausgabe sieht dann so aus:

Welchen Menupunkt wollen Sie wählen? Welchen Menupunkt wollen Sie wählen? Welchen Menupunkt wollen Sie wählen? und dann hält er an, um meine Eingabe abzuwarten.

Kennt jemand das Problem, oder sieht einen Fehler in meinem Code?

21.06.2005 - 10:35 Uhr

Hallo

Ich suche eine Mausproperty, mit welcher ich den Mauszeiger ein und ausblenden kann. Ich brauche das für ein Control, in dem man zeichnen soll (ähnlich mspaint), wo der Mauszeiger natürlich stört.

Weiss jemand wo ich suchen sollte? Google hat mir auf die schnelle keine brauchbaren Ergebnise geliefert (wohl auch, weil mir im Moment der englische Begriff für Mauszeiger komischerweise nicht einfallen will 😄)

Vielen Dank

14.06.2005 - 14:35 Uhr

moin phpbubu 🙂

also ich habe bei "demASCIICon" auch je nach Bild über 10'000 getPixel() Aufrufe drin, was die Performance nur leicht negativ beeinflusst. Ausserdem kannst du ja abbrechen sobald der erste Pixel nicht überreinstimmt.

So wie ich dich verstehe willst du das Pic ja von einer Webseite runterladen. Dann kannst du ja alternativ antstatt die Image (oder Bitmap?) Objekte einfach die Dateien miteinander vergleichen (Pfad). Ich habe aber jetzt nicht den ganzen Thread gelesen, kann also sein, dass ich dich nicht so recht verstanden habe.

Bis morgen in der Schule 😁

20.05.2005 - 17:01 Uhr

Danke euch vielmal - Es funktioniert tiptop (und das Bild ist einen Augenblick nach anklicken des Buttons da)

20.05.2005 - 16:41 Uhr

3A-D8-D8-3A-D8-D8-D8-D8-D8-D8-3A-3A-D8-D8-3A-3A-D8-D8-D8

Das gibt bei mir ne Menge Hexzahlen - ich wird wohl am BitConverter liegen

20.05.2005 - 16:36 Uhr

kk - Werds gleich mal ausprobiere (wobei mir die for Schleife trotzdem symphatischer ist 😄).

Werd dann Bescheid geben

20.05.2005 - 16:14 Uhr

Nein - ich initialisiere die Liste als Property, schreibe meine Daten rein, und lese sie in einer anderen Methode aus - mehr nicht. Ich arbeite aber tatsächlich mit getPixel(). Gibt es denn da eine Alternative?

So recht glaube ich aber nicht, dass es daran liegt. Denn das Problem tritt auch in der Methode auf, in welcher ich die getPixel() gar nicht aufrufe. In dieser

private void brightnessToASCII(ref ArrayList raw, bool inverted)
{
	this.rtbASCII.Clear();

	if(!inverted) // normal
	{
		for(int i = 0; i < raw.Count; i++)
		{
			if((byte)raw[i] == 101) // Zeilenumbruch
			{
				this.rtbASCII.Text += ((char)13);
			}
			else if((byte)raw[i] > 80)
			{
				this.rtbASCII.Text += 'X';
			}
			else if((byte)raw[i] > 70)
			{
				this.rtbASCII.Text += ((char)219);
			}
			else if((byte)raw[i] > 40)
			{
				this.rtbASCII.Text += ((char)216);
			}
			else if((byte)raw[i] > 20)
			{
				this.rtbASCII.Text += ':';
			}
			else
			{
				this.rtbASCII.Text += ' ';
			}
		}
	}
}

btw. ich habe mir mal den NProf runtergeladen - werds gleich mal anschauen.

20.05.2005 - 16:02 Uhr

Das ganze ist ein ASCIIBild Ersteller. Man kann also ein Bild einlesen, und ich erstelle daraus ein ASCII Bild. Geht auch ganz gut (ausser, dass ich noch ne gute Tabelle erstellen muss welches ASCII Zeichen bei welcher Dunkelheitsstufe zu nehmen ist) - eben bis auf die Performance. Ich werde schlussendlich also etwa 15-20 ifs hintereinander haben.

Das ein Byte Array besser wäre habe ich mir auch vorgestellt. Wie geht denn das mit dynamischem Array? Ich dachte immer in c# wäre man auf ein ArrayList angewiesen 😠

20.05.2005 - 15:43 Uhr

hm... das ist blöd 😠

Also im Moment braucht mein Tool fast 3 Minuten (!) bei vielleicht 10'000 Durchgängen (bin selber erstaunt wieviele es geworden sind 😄), und das ist wirklich zu viel.

Was vielleicht auch noch ein Problem ist, ist dass ich eine ArrayList benutze, die etwa 10'000 Elemente gross ist (kann aber stark variieren). Sind zwar "nur" byte Daten gespeichert, aber ein ArrayList macht ja für jedes Item ein Object. Wie kann ich denn das sonst machen? Gibt es in c# dynamische Arrays wie in c++, ohne dass man unsafe Code schreiben muss?

***hmmm: Wie komme ich denn plötzlich in das Formular für neue Beiträge? confused
Bitte in den Switch Thread verschieben oder so 🙂

20.05.2005 - 15:19 Uhr

Hallo zusammen

Ich habe grade ein kleines Problem, und es ist sicher kein Problem für euch mir schnell zu sagen wie ich das machen muss. Eigentlich programmiere ich schon länger (immer wieder) mit c#, aber sowas habe ich noch nie gebraucht, auch wenn es zu den absoluten basics gehört.

Was ich will ist eine Switch Anweisung mit einem "grösser als" als Abfrage. Ihr könnt euch das etwa so vorstellen:

switch((byte)raw[i])
{
    case 101: break;
    case >80: break;
    case >50: break;
}

Der Hintergrund ist der, dass ich den Code bisher mit einigen if Abfragen habe. Das Problem ist, dass es bisher 6 (werden noch mehr) if Abfragen sind, und diese noch in einer for Schleife sind, welche gerne mal 1000 mal durchläuft - Sprich: die Performance ist absolut unterste 🙁

Ich hab gelesen Switch sei schneller als if - wenn ihr noch weitere Tricks zur Performance optimierung kennt, dann postet diese doch auch gleich 😉

gruss - sra

22.01.2004 - 09:22 Uhr

Bis jetzt habe ich das ganze als string... also "Red" oder "Blue". Allerdings spiele ich mit dem Gedanken das ganze mit RGB oder Hex zu machen, da man da leicht schauen kann, ob die Eingabe ok ist.

Gibt es denn keine Color.Parse oder so?... Kann doch nicht so ein Problem sein einen Datentyp in einen anderen zu casten.

21.01.2004 - 20:01 Uhr

hallo

Ich möchte aus einem array (string[]) einen farbwert auslesen, und diesen dann einem einem Pen zuweisen. Es geht um Grafikprogrammierung für Anfänger (mit gdi+).

System.Drawing.Color sColor = (System.Drawing.Color) myString[4]; //geht nicht

und sonst habe ich es auch noch nicht geschafft.

Danke