Laden...

Forenbeiträge von DeveloperX Ingesamt 462 Beiträge

30.12.2005 - 02:43 Uhr

Hallo!

Probier mal, ob this.Update(); nach dem Setzen des Status-Textes funktioniert. Hatte mal das gleiche mit einer ProgressBar und es hat dann funktioniert.

mfg

28.12.2005 - 14:48 Uhr

hm ... ich glaube er meinte, ob man erkennen kann, ob eine Funktion die man aufruft, im Fehlerfall eine Exception wirft. Genau diese Frage hab ich mir auch schon vor einiger Zeit gestellt, habe aber keine Antwort darauf gefunden.

Bei den ins SDK eingebauten Funktionen stehts ja immer bei der Funktionsbeschreibung dabei, also wird dir nichts anderes übrig bleiben als selbst solche Summaries für deine Funktionen zu schreiben und darauf zu achten dass du alle Exceptions fängst.

mfg

27.12.2005 - 03:18 Uhr

Hallo!

Also: du könntest die Methode 'SendToBack()' aufrufen, und zwar immer dann, wenn das Fenster den Fokus bekommt oder sonst irgendwie in den Vordergrund kommen könnte und wenn das Fenster minimiert wird (klick auf 'Desktop anzeigen') das Fenster wiederherstellen.

Und ich würds ebenfalls mit einem transpartenten Fenster machen (also ohne Titelleiste).

mfg

26.12.2005 - 22:49 Uhr

Hallo dragi!

erstell dir doch UserControls. Für jede Art von TreeNode erstellst du dann ein eigenes UserControl und übergibst dem den Inhalt vom selektierten TreeNode.

Wenn sich die Auswahl im TreeView ändern, entfernst du die im rechten 'Frame' enthaltenen Controls (also das aktuelle UserControl) und instanziierst ein neues UserControl für den gerade selektierten Knoten und fügst dem 'Frame' dieses Control hinzu.

Alternativ kannst du auch die Instanzen der UserControls behalten und immer nur ein- bzw. ausblenden lassen.

Edit: siehe auch: Mit Forms eine art Frame einer Website nachbauen?

mfg

26.12.2005 - 22:45 Uhr

ja musst du. und diese werte dann durchgehen und für jeden wert einen Cmd absetzen.

26.12.2005 - 19:44 Uhr

Hallo!

Wenn du vor cmd2.ExecuteReader() noch reader1.Close() machst, müsste es gehn ...

Edit: Hab gerade gesehen, dass das 2. ExecuteReader innerhalb der while-Schleife des ersten ist. Das geht nicht. Pro Connection nur 1 gleichzeitiger Reader.

Du könntest die Werte mal auslesen, den 1. Reader closen und dann in einer 2. Schleife die Werte durchgehen und damit dann den Reader2 aufrufen.

mfg

26.12.2005 - 12:53 Uhr

hallo!

meinst du etwa methoden überschreiben?
Wenn ja, dann brauchst du nur in der NewClass "override" eintippen und schon bekommst du eine Auswahl der Methoden der Basis-Klasse die du überschreiben kannst.

mfg

23.12.2005 - 19:02 Uhr

Hallo zusammen!

Ich möchte gern einige Informationen zu Sourcecode der von mir erstellt wurde. Wichtig sind für mich vor allem Lines of code, Anzahl Klassen usw.

Für .NET 1.1 habe ich dafür DevMetrics verwendet. Aber benutzt momentan VS 2005 beta 2 und habe dafür noch kein solches Tool/PlugIn gefunden.

Kann einer von euch eines empfehlen?

mfg

22.12.2005 - 17:37 Uhr

Original von Snowwolf3000
Also ich hab für mein jetziges Projekt Codus (ist ein Code Generator) verwendet und mir damit die DAL aufbauen lassen. Einfacher kann eigentlich die Kommunikation mit der DB fast garnicht sein. Anderseits wenn dir sogar ein DataSet schon zuviel Overhead ist...

Ich will eigentlich keinen Code-Generator verwenden, da ich dabei ja was lernen will. Mir gehts im Prinzip nur darum möglichst viel selber zu machen und das auf die performanteste Art und Weise.

Was sagt ihr zu der Idee mit der HashMap?

mfg

22.12.2005 - 17:33 Uhr

Original von Der Eisbär

Original von DeveloperX
Business Entities: geht nicht, weil wenn ich 2 Projekte mache (BusinessLayer und DataLayer), hat der BusinessLayer eine Referenz auf DL und umgekehrt: das lässt das VS nicht zu.

Wieso hast Du dann zirkuläre referenzen? Dann hast Du was falsch verstanden ....

Weil ich dem DataLayer ja eine Klasse des BusinessLayers mitgeben muss (z.B. Contact). Der DL holt sich dann die Werte und speichert sie in die DB.

Und da der DL ja die Klassendefinition von z.B. Contact kennen muss, muss er ja auch eien Referenz auf BusinessLayer haben. Daher die zirkuläre Referenz.

Oder habe ich da etwas falsch verstanden?

21.12.2005 - 22:42 Uhr

Hallo!

So, ich greife mal den Thread hier etwas auf, da ich gerade vor genau diesem Problem stehe!

Gibts es neue Entwicklungen bezüglich dieser Thematik?

Ich hab mir den Guide von Microsoft überflogen, kann mich aber nicht entschliessen etwas zu nehmen, weil irgendwie alles mehr oder weniger große Nachteile hat (ich arbeite mit Instanz Daten, hab ich zwar noch nie gehört, müsst aber laut dem Guide passen):
*DataSets: viel zu viel Overhead *Business Entities: geht nicht, weil wenn ich 2 Projekte mache (BusinessLayer und DataLayer), hat der BusinessLayer eine Referenz auf DL und umgekehrt: das lässt das VS nicht zu. *XML: Zu viel Performance-Verlust wegen Parsen *DataReaders: hm .. ziemlich komische Geschichte, DataReaders zurückzugeben, da sie ja Verbindungsgebunden sind. *Scalar Values: keine Ahnung was man damit macht? Vielleicht kann mich wer von euch darüber aufklären?!

So, und demnach bin ich auf eine andere Lösung gestossen: Eine HashMap machen mit den Spaltenname als Key und Spalteninhalt als Value. Bei mehreren Ergebniszeilen halt ein Array von Hashmaps.

Frage: was haltet ihr von diesem "Umweg" und gäbe es da performancemäßig Probleme? Was nehmt ihr als Übergangsmedium zwischen DataLayer und BusinessLayer?

Ein paar Infos noch:

  • Ich möchte nur Daten rauslesen und wieder schreiben, ich brauche also kein Datenhaltungs-Objekt oder sonstiges.
  • Pro Abfrage werden einigermaßen viele (ca. 500 - 5000) Zeilen mit relativ weniger Spalten (2 - 5) zurückgegeben.
  • Die Daten werden nur einmal beim Programmstart geladen und zwichen durch wieder gschrieben.

Vielen Dank schonmal im Vorraus für Tipps, Anregungen und sonstigen Beiträgen!

mfg DeveloperX

19.12.2005 - 21:25 Uhr

noch eine Möglichkeit:

bool gerade = "02468".Contains(s[s.Length - 1].ToString());

mfg

19.12.2005 - 18:00 Uhr

oder eventuell mit BeginUpdate() und EndUpdate()

16.12.2005 - 13:55 Uhr

also folgendes funktioniert bei mir (net 2.0 beta 2) einwandfrei:

System.Windows.Forms.Clipboard.Clear();

mfg

16.12.2005 - 13:16 Uhr

hallo!

vermutlich mit Clipboard.Clear(). hört sich zumindest passend an 😉

mfg

14.12.2005 - 20:39 Uhr

Die konsole-Ausgaben sieht man eh im VisualStudio in einem Fenster unten.

mfg

13.12.2005 - 19:35 Uhr

Interessant wäre z.B. das 8-Damen-Problem iterativ zu lösen.

Ich hätte da ehrlich gesagt nicht so nen Plan, wie ich anfangen sollte ...

11.12.2005 - 23:58 Uhr

Hallo!

Die Klassenansicht müsste dir helfen:
View --> ClassView

Dann siehst du in dem oberen Fenster die Klassen nach Namespaces geordnet und wenn du auf eine Klasse klickst, hast du unten die Properties, Funktionen und Konstruktoren dazu.

mfg

11.12.2005 - 12:49 Uhr

Hallo!

probiers mal mit

string text = "irgendwas\0\0";
text = text.replace("\0", ""); 

Edit: Im ersten string von replace sollte ein \0 stehen

mfg

10.12.2005 - 21:30 Uhr

Hallo

Hier der Link zu VC# 2005 Express
http://msdn.microsoft.com/vstudio/express/visualCsharp/default.aspx

mfg

02.12.2005 - 15:31 Uhr

Hallo!

Wenn du den ToolStrip container verwendest bekommst du gleich den farbverlauf dazu!
Ist generell eine coole Sache, der ToolStripContainer.

mfg

28.11.2005 - 22:25 Uhr

Weitere Verbesserung:

MinimumSize für das Form angeben, da man sonst das Fenster bis auf die Titelleiste verkleinern kann und bei kleinen Fenstergrößen es unspielbar wird.

mfg

28.11.2005 - 20:16 Uhr

Hallo!


if (!changedname)
            {
                DialogResult dlgr = MessageBox.Show("Du hast deinen Namen noch nicht eingegeben. Trotzdem fortfahren?", "Achtung", MessageBoxButtons.YesNo));
                if (DialogResult.No == dlgr)
                {
                    ShowOptions();
                    StartNewGame();
                }
                else if(DialogResult.Yes == dlgr)
                {
                    StartNewGame();
                }
            }
            else
            {
                StartNewGame();
            }

mfg

28.11.2005 - 19:41 Uhr

Neben DateTime gibt es noch weitere Klassen die für Datums-Operationen nützlich sind:*System.Globalization.DateTimeFormatInfo: bietet u.a. Einstellungsmöglichkeit für Berechnung der ersten Woche: FirstDay, FirstFourDay(lt. obigem Post ja der europäische Standard) und FirstFullWeek *System.Globalization.Calendar: Kalenderwoche, Anzahl der Tage im Jahr/Monat, der wievielte Tag des Jahres/Monatgs/Woche ist das Datum in DateTime, usw...

mfg

28.11.2005 - 18:15 Uhr

Hallo

if (ctl is ComboBox)

mfg

27.11.2005 - 20:22 Uhr

Vielen Dank für die Antwort! Das mit dem auf null prüfen kannte ich noch gar nicht! Hat mich aber sehr weitergeholfen!

Original von tb
Allerdings sein angemerkt, dass das Auslösen eines Events im Konstruktor nicht sehr sinnvoll ist. Denn dieses Event kann gar niemand empfangen, da man sich erst nach der Instanziierung dafür registrieren kann.

Das Event ist ja eh ein Event von Session und nicht des neu erzeugten Item-Objektes. Und das Session-Objekt muss man ja haben um den Konstruktor der Item-Klasse aufzurufen.

Habe das ganze übrigens jetzt etwas gelöst: Ich habe eine neue Methode Session.CreateItem(ItemType) geschrieben und instanizere dort erst das Objekt und registiere es erst dann. Und ich habe den Konstrukor von Item auf internal geändert damit man den nicht mehr von aussen aufrufen kann.

Vielen Dank nochmal!!

mfg developerX

27.11.2005 - 18:22 Uhr

Hallo!

Hab grad folgendes Problem:

Ich habe ein Session-Klasse die mir die ganzen Daten (Objekte der Klasse Item) verwaltet. Im Konstrukor der Item-Klasse wird Session.RegisterItem aufgerufen um für das Item einen ID zu bekommen. (die Session wird übrigens im Item-Konstrukor mitgegeben)

Jetzt möchte ich aber, wenn die RegisterItem-Mehode (befindet sich ja in Session) aufgerufen wird, dass das Event 'ItemRegistered' (ebenfalls in Session) augerufen wird. Dieses Event soll als Parameter das Item-Objekt, das gerade registriert wird, als Parameter enthalten.

Aber da das Item-Objekt im Prinzip ja noch nicht existiert (Konstrukor ist noch nicht fertig) bekomme ich eine NullReference-Exception beim Aufruf des Events.

Gibt es dazu irgendwelche Techniken ob das zu umgehen oder hat irgendwer eine andere Idee das zu realisieren?

Dankeschön im Vorraus!

mfg developerX

26.11.2005 - 17:20 Uhr

ich verwende auch noch die beta2.

Weiss wer, wielange die noch lauffähig ist?

bzw. vl. meinte hauptmann, dass die Download-Möglichkeiten abgelaufen sind ...

mfg

25.11.2005 - 14:25 Uhr

Hallo!

Vermutlich ist in der Datenbank der benötigte Datensatz noch nicht vorhanden. Schau am Besten mal, ob in der Datenbank wirklich ein Datensatz mit dem PrimaryKey vorhanden ist, der beim Update verwendet wird.

mfg

21.11.2005 - 00:39 Uhr

Hallo!

select * from person
where person.id not in (select person.id from person, teilnehmer where teilnehmer.eventid = ? and teilnehmer.personenid = person.id)

müsste so funktionieren!

mfg

20.11.2005 - 22:05 Uhr

hm ... mir ist gerade aufgefallen dass du die ausgeben willst, die mit der angegeben nummer anfangen ... und du prüfst ja lediglich ob die nummern gleich sind.

"PersNr like '6072%'" geht vielleicht!

mfg

20.11.2005 - 20:10 Uhr

Hallo!

ich kenn mich zwar mit rowFilter nicht so aus, aber müsste statt dem AND nicht ein OR stehen? Weil eine Datensatz kann nicht mit '6015' und gleichzeitig '6072' beginnen ...

mfg

16.11.2005 - 22:19 Uhr

Hallo thisbase!

Mit der Methode

ds.Tables["Testtabelle"].Constraints.Add(...)

kannst du PrimaryKeys, ForeignKeys etc. hinzufügen.

mfg

16.11.2005 - 21:12 Uhr

dr.RecordsAffected

16.11.2005 - 18:24 Uhr

Hm ... kannst du das Map&Guide-Objekt bei jedem Seiten-Aufruf neu instanziern? Dann wäre es vermutlich die bessere Lösung von du nur die 5 long-variablen speicherst und das Map&Guide-Objekt neu erstellst.

Oder aber wenn das M&G-Objekt sowieso für alle Seitenaufrufe gleich ist und sich nur die 5 long-Variablen ändern, könntest du auch das M&G-Objekt in der Session ablegen und die 5 Variablen in den ViewState speichern.

Ansonsten, falls dass M&G-Objekt nicht allzugross ist, könntest du eine eigene Klasse machen die von der M&G-Klasse erbt und zusätzlich ISerializable implementiert. Und dieses dann im ViewState speichern.

mfg

16.11.2005 - 17:57 Uhr

ja kannst du. Aber sie müssen ISerializable implementieren!

mfg

16.11.2005 - 12:26 Uhr

eventuell könnte das funktionieren:

select site.ID as SiteID, user.ID as UserID from ...

Ich löse dass aber immer so, dass ich den Tabellennamen zum Id-Feld dazugeben also bei der Site-Tabelle würde der PrimaryKey 'SiteID' heissen. Damit kann man solche Konflikte umgehen.

mfg

16.11.2005 - 11:06 Uhr

naja, das ist ja wahrscheinlich kein c# problem, sondern ein http/html problem. Hast dus mit der AppendHeader-Funktion versucht?

16.11.2005 - 08:41 Uhr

Hallo Powerslave!

Ich denke mal ViewState-Objekt dürfte dir helfen: Das kannst du so benutzen wie das Session-Objekt (also Werte rein- und rausschreiben) ist jedoch nur innerhalb der PostBacks einer Seite verfügar.
Also wenn du Seite1.aspx hast, was in den ViewState schreibst dann kannst du bei einem Klick auf einen Button (--> löst PostBack aus) die ViewState-Werte wiederauslesen.

mfg

15.11.2005 - 15:47 Uhr

Hallo!

Es geht, wenn du die Schriftart der TreeView auf Bold stellst, und den einzelnen Nodes manuel ein Font mit bzw. ohne Bold gibst, weil zur Berechnung der Breite die Font des TreeViews und nicht des Nodes herangezogen wird.

mfg

14.11.2005 - 23:43 Uhr

Hallo!

Ich hab mal ein wenig gegoogelt und anscheindend muss man dafür (das mir unbekannte) content-disposition-Attribut verwenden:

http://faq-php.de/q/q-code-excel.html

http://www.issociate.de/board/post/264267/Links_auf_Dateien.html

Da es im Respone-Objekt keine entsprechende Methode dafür gibt, müsstest du wahrscheinlich mit AppendHeader(...) arbeiten.

mfg

12.11.2005 - 23:51 Uhr

Etwas anfängerfreundlicher, jedoch umständlichere Variante:

Die ganze Datei zeilenweise in eine ArrayList o.ö. einlesen. und dannach alle überprüfen ob zeile.StartsWith("set Targetadress = ") wahr ist. Wenn ja dann zeile = "set Targetadress = xxx". Und danach wieder alle Zeilen in die Datei schreiben.

mfg

10.11.2005 - 22:10 Uhr

Vielleicht helfen dir auch Themes (bzw. Skin-Files) weiter. Wird auch ab 2.0 untersützt.

mfg

10.11.2005 - 20:13 Uhr

Zoll ist eine Maßeinheit:

1 Zoll = 2,54 cm

Müsste aber eigentlich jedem geläufig sein --> Bildschirmdiagonale wird in diese Einheit gemessen 😉

Es sei denn, es steht in einem anderem Zusammenhang. Aber wenn dus im Visio gelesen hast, ists mit Sicherheit die Maßeinheit.

mfg

10.11.2005 - 19:16 Uhr

in diesem fall, fasst es alle datensätze mit gleichem type-wert zusammen und zählt wieviel zusammengefasst wurden (grob erklärt)

Edit:
Group By

mfg

10.11.2005 - 18:21 Uhr

So habs ichs ja geschrieben: das Tool generiert dir die Shapes, die deine Klassen als Visio-Objekte darstellen ...

Probiers einfach mal aus mit Projekt --> Visio UML --> Reverse Engineer

mfg

10.11.2005 - 17:23 Uhr

Du kannst in VS 2003 Shapes, die deine Klassen darstellen, generieren lassen, die dann in Visio verfügbar sind.

und zwar unter Projekt --> Visio UML --> Reverse Engineer#
Dann hast du unten links den Model Explorer und da sind die Klassen drinnen.

mfg

09.11.2005 - 21:01 Uhr

ja, das kannst du glaube ich überall abfragen.

Ein klick auf z.B. einen Button verursacht einen PostBack (sprich, die aktuelle Seite wird nochmal geladen).
IsPostBack prüft also ab, ob diese Seite durch z.B. einen Buttonklick (der button befindet sich auf dieser Seite) erneut geladen wurde (IsPostBack) oder ob man durch einen Link oder Eingabe in Adresszeile auf diese Seite gelangt ist (!IsPostBack).

mfg

09.11.2005 - 20:32 Uhr

Auf der Login-Seite:

if (IsPostBack)
{
  // TextBox_PWD.Text und TextBox_USERNAME.Text holen und in dein SQL-Query einfügen und dies ausführen.
  if ( ... login gültig ...)
  {
      Session["username"] =  TextBox_USERNAME.Text;
      Response.Redirect("unterseite.aspx");
  }
}

Und dann kannst du auf der Unterseite die Session-Daten wieder lesen und falls der user nicht eingeloggt ist, auf die Login-Seite weiterleiten:


if (Session["username"] == null)
   Response.Redirect("login.aspx");
IrgendeinControl.Text = Session["username"];
// und der Rest des Codes der unterseite ...

Ich hoffe das ist verständlich.

mfg