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
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
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
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
ja musst du. und diese werte dann durchgehen und für jeden wert einen Cmd absetzen.
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
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
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
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
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?
Meinst du sowas in der Art?
http://www.developer.com/img/articles/2003/05/06/Thiru/Remote1.jpg
mfg
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:
Vielen Dank schonmal im Vorraus für Tipps, Anregungen und sonstigen Beiträgen!
mfg DeveloperX
noch eine Möglichkeit:
bool gerade = "02468".Contains(s[s.Length - 1].ToString());
mfg
oder eventuell mit BeginUpdate() und EndUpdate()
also folgendes funktioniert bei mir (net 2.0 beta 2) einwandfrei:
System.Windows.Forms.Clipboard.Clear();
mfg
hallo!
vermutlich mit Clipboard.Clear(). hört sich zumindest passend an 😉
mfg
Die konsole-Ausgaben sieht man eh im VisualStudio in einem Fenster unten.
mfg
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 ...
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
Hallo!
probiers mal mit
string text = "irgendwas\0\0";
text = text.replace("\0", "");
Edit: Im ersten string von replace sollte ein \0 stehen
mfg
Hallo
Hier der Link zu VC# 2005 Express
http://msdn.microsoft.com/vstudio/express/visualCsharp/default.aspx
mfg
Hallo!
Wenn du den ToolStrip container verwendest bekommst du gleich den farbverlauf dazu!
Ist generell eine coole Sache, der ToolStripContainer.
mfg
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
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
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
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
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
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
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
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
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
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
Hallo thisbase!
Mit der Methode
ds.Tables["Testtabelle"].Constraints.Add(...)
kannst du PrimaryKeys, ForeignKeys etc. hinzufügen.
mfg
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
ja kannst du. Aber sie müssen ISerializable implementieren!
mfg
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
naja, das ist ja wahrscheinlich kein c# problem, sondern ein http/html problem. Hast dus mit der AppendHeader-Funktion versucht?
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
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
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
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
Vielleicht helfen dir auch Themes (bzw. Skin-Files) weiter. Wird auch ab 2.0 untersützt.
mfg
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
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
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
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
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
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