Laden...

Forenbeiträge von hurricane Ingesamt 379 Beiträge

29.08.2005 - 11:33 Uhr

Es geht nicht um deine btnSave_Click-Methode sondern um Page_Load, poste doch mal bitte deren Code 😉

29.08.2005 - 11:26 Uhr

Der Fehler den du da gepostet hat, sieht aus als käme er von Oracle... hast du denn eine korrekt Datumsstruktur eingegeben?

Lädst du den Seiteninhalt in der Page_Load-Methode? Wenn ja, dann schau mal nach IsPostBack. Habe schon lange keine Webanwendungen gemacht, aber ich glaube es müßte ungefähr so sein:


if(!IsPostBack)
{
   // hier kommt die Datenbankabfrage und das füllen der TextBoxen hin.
}

Wenn du es nicht in diese Schleife einbindest sondern direkt ins Page_Load wird das füllen der Datenbank bei jedem Aufruf der Seite aufgerufen, also auch bei dem Klick auf deinen Button 😉 Demzufolge liest er die Daten auch ne aus, füllt diese wieder in die DB und geht dann erst in deine Button-Click-Methode um dann den "alten" Inhalt wieder zu speichern...

ciao Anke

29.08.2005 - 11:15 Uhr

Und was gibt die die MessageBox aus, die du eingebaut hast?

Steht denn da bereits das falsche Datum? (ich nehme mal an ja, oder?)

Es handelt sich um eine Windowsanwendung, oder? Denn sonst könntest du ja keine MessageBox einbauen....

Bei einer Webanwendung würde ich ja sagen das du im Page_Load immer das aktuelle lädst und damit die TextBox überschreibst, aber bei einer Windowanwendung ist das echt merkwürdig...

29.08.2005 - 11:10 Uhr

Das "SELECT @@IDENTITY" kann man nicht immer anwenden, wenn z.B. beide Befehle in einer Transaktion stehen, dann wird dort keine ID ermittelt.

Ich verwende in solch einem Fall nicht die Autowert-Funktion (Access) sondern ich ermittele mir die momentan höchste ID und zähle 1 dazu. Ich erzeuge mir also meinen eigenen Autowert...
Die ID verwende ich dann für beide Datensätze, so wie du es ja auch brauchst.

Selbst wenn in Access für die Schlüsselspalte (PK) Autowert angegeben wurde, kann man die ID einfach abspeichern. Ob das bei Oracle auch geht weiß ich leider nicht...

ciao Anke

29.08.2005 - 11:05 Uhr

Wenn du das Hauptfenster schließen willst, kannst du es ja mal mit Application.Exit versuchen 😉

29.08.2005 - 11:03 Uhr

Wie meinst du das jetzt genau? Möchtest du wissen wie du deine DataTable auliest?

Hier mal ein Codeschnipsel (ungeprüft)


foreach(DataRow row in dataTable.Rows)
{
   string col1 = row["Spalte 1"].ToString();
   string col2 = row["Spalte 2"].ToString();;
   // ... was du dann mit den Variablen, bzw den Werten machst ist ja dann dir überlassen ;-)
}

ciao Anke

26.08.2005 - 10:59 Uhr

OK, klappt dann doch so, ich mußte nur den EventHandler extern definieren, den hatte ich auch im Interface, aber das ist natürlich Quatsch.
Tja kommt davon wenn man überarbeitet ist X(

26.08.2005 - 10:23 Uhr

Hallo Forum,

ich schreibe eine Software für die es Plugins geben soll. Diese Plugins erben jeweils von einem Interface. Das funktioniert auch alles ganz super. Nun soll man aber Einstellungen für die Plugins vornehmen können.

Das ist auch kein Problem, siehe http://www.codeproject.com/csharp/PluginsInCSharp.asp

Nunr will ich aber ein Event feuern wenn ich eine Einstellung an einem Plugin geändert habe. Geht das überhaupt? Wenn ja wie?

Wie kann ich sonst meinem Programm beibringen das es auch eine Änderung im Plugin reagieren soll?

Vielen Dank schon mal,

Anke

26.08.2005 - 08:51 Uhr

Ich habe Wirtschaftsinformatik an einer technischen Fachhochschule studiert und muss sagen das ich sehr zufrieden damit bin.

Ich habe im Praktikum und die Zeit danach und während des Diploms in einer großen Firma Intranetanwendungen mit ASP.NET (C#) entwickelt. Nach der Diplomarbeit habe ich dann nebenbei an einem Projekt eine WIndowsapplikation erstellt (meine 1. überhaupt). Es folgten nebenbei ein paar kleine Tools, wie z.B. ein Tool zur Arbeit mit dem Active Directory unter Win 2003 Server.

Seit März arbeite ich jetzt in einer kleinen Softwarebude (2 Mann-Betrieb). Es macht auch richtig dollen Spaß. Wir entwickeln eine Software über die ich natürlich nichts weiter sagen darf 😉

Dabei programmiere ich hauptsächlich mit C# und im moment auch teilweise mit VB.NET, was ja teilweise ganz schön anders ist.

Ich habe mein Hobby wie viele andere hier zum Beruf gemacht 8)

25.08.2005 - 15:17 Uhr

Springt er denn überhaupt in die SelectedIndex-Changed Methode rein. Es kann ja sein das du zwar das Item markierst, aber das Event nicht geworfen wird...

So ein Problem habe ich bei einem anderne Control (UserControl) auch gerade. Er slektiert zwar das Item aber es wird kein Event geworfen und somit füllt er dann die TextBoxen nicht...

25.08.2005 - 15:12 Uhr

Wie wäre es mit einer ArrayList?

Ich finde die sehr komfortabel 😉

25.08.2005 - 09:04 Uhr

Ich hatte so ein ähnliches Problem auch schon einmal. Nur das mein Programm mehrere Sprachen hat (deutsch / englisch) und die MessageBox demzufolge angepasst werden sollte. Ich habe in einem Buch dann Code gefunden, wie man das machen kann... Mann kann dort den Text für Ja, Nein, Ok.... festlegen. Ich habe den Code jetzt aber nicht hier.

Habe so auf die Schnelle das hier beim Googeln gefunden:

http://www.catch22.net/tuts/msgbox.asp

12.08.2005 - 14:04 Uhr

Nein Warnungen gibt es nicht. Ich kann ja auch normal Debuggen, aber es nervt mich halt dass es immer da steht. Ich habe das bei vielen Projekten.

12.08.2005 - 13:50 Uhr

Hmm, also ein Fehlercode steht da nicht. Nur der Text den ich kopiert habe...

Ich habe auch nichts gefunden um die Ausgabe zu erweitern oder ähnliches.

ciao Anke

12.08.2005 - 13:22 Uhr

Ich wußte nicht genau wo ich es posten soll, aber ich dachte "Rund um die Programmierung" passt am ehesten 😉

Ich habe mal eine allgemeine Frage. Beim Debuggen im VS.NET stehen in der Aufgabenliste immer Einträge, wie:

Die Abhängigkeit "ImageComboBox" wurde nicht gefunden.

Kann man die Einträge irgendwie weg bekommen? Es passiert zwar weiter nichts, aber ich fände es schöner, wenn meine Aufgabenliste leer wäre 😁

ciao Anke

12.08.2005 - 09:15 Uhr

Damit habe ich mich auch schon rumgeärgert 😁

Hierm al mein Code der bestens funktioniert 😉 Ich validiere gegen eine DTD


/// <summary>
/// Überprüft ob das XmlDocument-Objekt, welches übergeben wird,
/// oder im Dokument enthaltenen Document Type Definiton.
/// </summary>
/// <param name="doc">XmlDocument welches zu Validieren ist</param>
public void Validate(XmlDocument doc)
{
	try
	{
		// Erstellt einen XmlValidatingReader zum Validieren der Datei.
		XmlValidatingReader vr = new XmlValidatingReader(doc.InnerXml, XmlNodeType.Document, null);
				
		// Setzt den ValidationType auf DTD.
		vr.ValidationType = ValidationType.DTD;
				
		// Bindet einen ValidationEventHandler an den XmlValidatingReader.
		vr.ValidationEventHandler += new ValidationEventHandler(ValidationHandler);
				
		// Liest die Datei aus und überprüft diese.
		while(vr.Read());
				
		// Schließt den XmlValidatingReader wieder.
		vr.Close();
	}
	catch(Exception ex)
	{
		// Hier den Fehler abfangen ;-)			
	}


/// <summary>
/// Dient zur Überprüfung, ob das XML-Dokument gültig ist.
/// </summary>
/// <param name="sender">System Value</param>
/// <param name="args">System Value</param>
private void ValidationHandler(object sender, ValidationEventArgs args)
{
    // Hier den Validierungsfehler abfangen ;-)
	throw new ArgumentException("Validierungs Fehler: " + args.Message);
}

10.08.2005 - 11:55 Uhr

Hmm, ja das tue ich wohl. Weiß aber auch nicht wie ich es sonst lösen könnte.

Anfangs hatten wir (also mein Kollege und ich) die UserControls direkt in der XXX.dll aber da kamen gleich ganz komische Fehlermeldungen bei raus... deswegen haben wird die Controls in extra DLLs gepackt. Ich weiß nicht mehr wie die Meldungen lauten, das müßte ich erst noch einmal wiederholen...
Ich hatte nach den Meldungen gegoogelt aber nichts gefunden 🙁

Wie würdest du es denn machen? Beide UserControls verwenden jeweils die XXX.dll ...

Diese Meldung erscheint:


Microsoft Development Environment

Das Objekt mit der ID 108 implementiert die IObjectReference-Schnittstelle, für die nicht alle Abhängigkeiten aufgelöst werden können. Mögliche Ursache sind zwei Instanzen von IObjectReference, die voneinander abhängig sind.

OK

ciao Anke

10.08.2005 - 11:47 Uhr

Hmm, jetzt habe ich mal zuerst das MapControl und dann das GridControl hinzugefügt, beide mit dem selber Stand der XXX.dll, nun kann ich das MapControl, aber nicht das GridControl hinzufügen 🙁

Ich werde mal beide Controls in eine DLL packen und gucken ob das geht. Dazu brauche ich aber erst die neueste Version des MapControls (habe nur ne alte) um das Control mit der neuesten DLL zu kompilieren stöhn.
Da der Kollege momentan nicht da ist, wird das wohl noch ein wenig dauern ...

ciao Anke

10.08.2005 - 11:36 Uhr

Hmm ein anderes Control, das wieder in einer DLL liegt, kann ich aber immer noch nicht hinzufügen.


Microsoft Development Environment

Eine Ausnahme ist aufgetreten, während eine Instanz von Mapping.MapControl erstellt wurde. Die Ausnahme war "Datei- oder Assemblyname 'XXX' oder eine Abhänigkeit davon wurde nicht gefunden.".

OK

Habe die Assembly jetzt mal XXX genannt. Ist die selbe Assembly die auch das GridControl verwendet und dich ich vorhin entfernt habt. Beim hinzufügen des GridControls auf die Form wurde die Assembly automatisch unter "Verweise" hinzugefügt. Wieso erkennt das MapControl dann aber die DLL nicht?
Kann so ein Fehler auch bei Versionskonflikten auftreten? Also wenn die beiden DLLs mit unterschiedlichen Versionen der XXX.dll erstellt wurden??? Das könnte nämlich sein, da dass MapControl ein Kollege programmiert hat...

10.08.2005 - 11:29 Uhr

Irgendwie habe ich es jetzt hingekommen.

Ich verwende in meinem GridControl eine DLL, die ich auch in meiner Anwendung verwende. Diese habe ich jetzt als Verweis rausgenommen, dann das GridControl im Designer hinzugefügt und siehe da, es hat funktioniert!!!
Ich werde die Einstellung von DebugModus "Programm" mal wieder raus nehmen und gucken ob es immer noch geht...

10.08.2005 - 11:16 Uhr

Ich habe jetzt denVerweis zu meinem GridControl unter Verweise entfernt.

Dann habe ich in der ToolBox unter "Eigene Benutzersteuerelemente" mein GridControl hinzugefügt in dem ich die entsprechende DLL ausgewählt habe. Das klappt auch einwandfrei. Wenn ich jetzt das GridControl auswähle, dann passiert einfach mal gar nichts, keine Meldung und nichts X(

Ich werde jetzt das ausprobieren, was du vorhin geschrieben hast, bis jetzt hatte ich leider keine Zeit dazu 😉

10.08.2005 - 10:57 Uhr

Der Monstertruck hat aber 11 ccm 😁 ich glaube es sind sogar 11.5, weiß es gar nicht mehr so genau. Ist von Thunder Tiger 😉

Ich habe ja nicht gesagt das ich deinen Vorschlag nicht ausprobieren will, sondern nur, das es mich wundert das es klappt, wenn ich im Konstruktor der Form das Control einbinde, aber im Designer klappt es nicht. Das finde ich halt komisch, das kann ja kein Fehler am Control sein, oder?
Es kommt ja auch kein Fehler wenn ich das Control im Designer einfüge, es passiert halt einfach nur nichts 🙁

Übrigens habe ich doch so ein schönes rosanes Zeichen neben meinem Benutzernamen, ist das nicht aussagekräftig genug ?( Außerdem habe ich noch nie eine "Er" gesehen der Anke heißt lach

10.08.2005 - 10:31 Uhr

@Norman-Timo

Ich bin doch aber kein "Er" X(

10.08.2005 - 10:30 Uhr

Ich kann das ja mal ausprobieren.

Das komisch ist ja nur, das es einmal bei dem einen Control ging. Und dann halt plötzlich nicht mehr. Ich habe jetzt ein Panel im Designer liegen. Dort füge ich mein UserControl hinzu und setzt Dock auf "Fill". Das geht natürlich auch, ist aber nicht so schön 🙁

Hier mal ein Beispiel:


// Erstellt eine GridControl.
			this.gridControlReport = new GridControl();

			// Die Werte (Size, Width, ...) des Labels werden für das GridControl kopiert.
			this.gridControlReport.Font		= this.pnlPlaceHolderControls.Font;
			this.gridControlReport.Location	= new Point(this.pnlPlaceHolderControls.Location.X, this.pnlPlaceHolderControls.Location.Y);
			this.gridControlReport.Size		= new Size(this.pnlPlaceHolderControls.Size.Width, this.pnlPlaceHolderControls.Size.Height);
			this.gridControlReport.Anchor	= this.pnlPlaceHolderControls.Anchor;
			this.gridControlReport.Dock		= this.pnlPlaceHolderControls.Dock;
			this.gridControlReport.Visible	= false;

			this.gridControlReport.Dock		= DockStyle.Fill;

			// Fügt das GridControl der Form hinzu.
			this.pnlPlaceHolderControls.Controls.Add(this.gridControlReport);

Es sollte hier ja der selbe mechanismus geschehen, wie wenn das Control im Designer hintugefügt wird. Es kommt hier aber keine Exception, also sollte das Control ja korrekt sein, oder?

10.08.2005 - 10:15 Uhr

Ich habe mir ein Usercontrol erstellt, in dem eine TreeView enthalten ist, die spezielle Funktionen hat.
Dieses Usercontrol habe ich in eine DLL gepackt und diese DLL habe ich meiner Anwendung hinzugefügt. Ich kann auch das Usercontrol in die ToolBar einfügen. Wenn ich jedoch das Control im Designer auf meine Form ziehe, dann passiert gar nichts. Es wird nicht angezeigt und es wird auch nichts im Code hinzugefügt.
Das selbe passiert mir auch bei 2 anderen Controls.
Ein Control wurde einmal im Designer angezeigt, nach einer kleinen Änderung jedoch, war das Control verschwunden.... Ich muss die Controly nun immer im Quellcode in die Form einbinden, was nicht gerade so toll ist.

Hat einer eine Idee, wie der Fehler zu Stande kommt und wie man ihn behen kann?

ciao Anke

08.08.2005 - 15:50 Uhr

Hallo myByg

lege Bitte im Designer entsprechende Columns an, also z.B. Dateinname, Erstellt am, und so weiter.
Dann stellst du die Sicht (View) der ListView auf "Details". Deine Einträge fügst du nun wie folgt hinzu:


for(int i = 0; i<10; <++)
{
  ListViewItem item = new ListViewItem();

  item.Text = "Dateiname";
  item.SubItems.Add("08.08.2005");
  item.SubItems.Add("500 KB");

  this.lvwFiles.Items.Add(item);
}

Habe das ganze jetzt nicht getestet, sollte aber so ungefähr klappen 😉
Für das Beispiel das ich geschrieben habe, müßtest du 3 Columns anlegen...

ciao Anke

08.08.2005 - 09:32 Uhr

Kannst du nicht einfach deine Prograssbar von 0-100 hochzählen und wenn du bei 100 angelangt bist, fängst du halt wieder bei 1 an? Du könntest das ganz ja mit einem Timer realisieren...

ciao Anke

08.08.2005 - 09:23 Uhr

Auf Arbeit und zu Hause nutze ich DSL 6000

29.07.2005 - 09:50 Uhr

Also ich zwar zwar nicht wie ich es jetzt hinbekommen habe, aber nach 100 versuchen hat es nun doch noich geklappt ohne das mein Control überschriebn wird!!!

Trotzdem danke fürs lesen 😉

29.07.2005 - 09:01 Uhr

Soo, jetzt muss ich auch mal diesen alten Thread aufgreifen.

@Schattenkanzler: Hast du eine Lösung für dein Problem gefunden? Bei mir ist es nämlich genauso, dass der Splitter das Controls was rechts daneben ist ein Stück verdeckt. So kann ich das ganze aber leider nicht verwenden X(

Wäre toll wenn einer eine Lösung dazu weiß 😉

ciao Anke

26.07.2005 - 11:35 Uhr

Ein MainMenu im Office2003-Style habe ich bereits gefunden, aber ich suche eine Toolbar. Habe ein brauchbares Tool gefunden, was ich mir mal genauer anschauen werde...

http://www.codeproject.com/cs/miscctrl/cstoolbar1.asp

26.07.2005 - 10:24 Uhr

Nein kann ich leider nicht, das Projekt wird unter 1.1 entwickelt und ich habe auch kein 2.0 X(

26.07.2005 - 10:00 Uhr

Darf man fragen ob aus dem Projekt nun noch was geworden ist? Der Beitrag ist ja immerhin schon eine Weile her...

Ich versuche gerade eine Toolbar mit Hellblauem Hintergrund zu erstellen, also so wie in Office 2003. den blauen Hintergrund bekomme ich hin, aber leider sehe ich dann die B uttuns nicht mehr 🤔

Vielleicht kann mir ja jemand helfen?

ciao Anke

25.07.2005 - 10:03 Uhr

Hallo Jan,

das passiert wenn du die Datenbank geöffnet hast, also mit Access und bei die entsprechende Tabelle im Entwurfsmodus geöffnet hast. Kann es sein, das dies der Fall war?

ciao Anke

20.07.2005 - 13:48 Uhr

Nur zur Information, ich habe das Problem jetzt gelöst.

Ich habe mir einfach über die Find-Methode das aktuelle StratagyData-Objekt aus der Collection heraus geholt. Wenn ich dieses Objekt dann an Remove weiter reiche, klappt alles.
Das ist zwar sehr merkwürdig, weil ich zwischendurch rein gar nichts an dem Objekt ändere, sondern nur was daraus auslese, aber ich bin froh wenigstens erst mal eine funktionierende Lösung gefunden zu haben 😉

20.07.2005 - 10:48 Uhr

Kann mich den anderen nur anschließen.

Du willst ja deinen Konstruktor von Außen ansprechen, aber von Außen ist dein Enum überhaupt nicht bekannt. Das erkennt das VS und bringt dir die entsprechende Fehlermeldung 😉

19.07.2005 - 07:49 Uhr

Ich wünsche Euch auch alles gute zum Geburtstag, macht weiter so 😉

15.07.2005 - 09:16 Uhr

probier doch einfach mal:

grid.DataScource = dataSet;

Dann siehst du zuerst deine Tabellenstruktur, kannst dann aber jeweils die einzelnen Tabellen angucken und danach wieder zur "Übersicht" wechseln...

ciao Anke

15.07.2005 - 09:14 Uhr

Diese Seite ist sehr nützlich 😉

http://www.faq-o-matic.net/content/view/60

ciao Anke

13.07.2005 - 10:41 Uhr

Hmm, leider wird das Objekt zwischendurch nicht geändert, ansonsten wäre das natürlich ein guter Tipp.

Ich lade beim Starten meiner Form die Collection, die gefüllt wird, in dem alle Strategien aus der Datenbank ausgelesen werden. Daraus wird jeweils ein StrategyData-Objekt erstellt und diese wird der Collection mittels Add hinzugefügt.

Wenn ich nun eine Strategie lösche, will ich sie aus meiner Collection raus nehmen bzw. löschen (das Objekt ist noch das selbe wie vorher, also nicht bearbeitet), damit die Strategie, die im Anschluß halt in der Datenbank gelöscht wird, nicht mehr in der Collection angezeigt wird, da sie ja nicht mehr existiert.

Eine andere Lösung wäre noch das die Collection neu geladen werden kann, was aber unter Umstanden lange dauert....

13.07.2005 - 09:55 Uhr

Die Fehlermeldung sagt mir zwar nicht viel, aber ich weiß das manche Email-Server Authentifizierung verlangen. Das heißt du musst von einem gültigen E-Mail-Konto des Servers den du angibst, einen Benutzernamen + Passwort übergeben.

ciao Anke

13.07.2005 - 09:51 Uhr

Hier einmal die Collection:


/// <summary>
	/// Speichert die Verweise auf alle geladenen Strategien.
	/// </summary>
	public class AvailableStrategies : System.Collections.CollectionBase
	{
		/// <summary>
		/// Fügt der Sammlung ein StrategyData-Objekt hinzu.
		/// </summary>
		/// <returns>Index, an dem das StrategyData-Objekt in der Sammlung eingefügt wurde.</returns>
		/// <exception cref="ArgumentNullException">
		/// Tritt ein, wenn statt einem Parameter NULL übergeben wurde.
		/// </exception>
		public int Add(StrategyData strategyToAdd)
		{
			// Prüft ob statt des StrategyData-Objektes NULL übergeben wurde.
			if(strategyToAdd == null)
			{
				throw new ArgumentNullException("strategyToAdd", "Es wurde kein gültiges StrategyData-Objekt übergeben.");
			}
			else
			{
				return this.List.Add(strategyToAdd);
			}
		}


		/// <summary>
		/// Löscht das übergebene StrategyData-Objekt aus der Sammlung.
		/// </summary>
		/// <param name="strategyToRemove">StrategyData-Objekt, welches aus der Sammlung gelöscht werden soll.</param>
		/// <exception cref="ArgumentNullException">
		/// Tritt ein, wenn statt einem Parameter NULL übergeben wurde.
		/// </exception>
		public void Remove(StrategyData strategyToRemove)
		{
				// Prüft ob statt des StrategyData-Objektes NULL übergeben wurde.
				if(strategyToRemove == null)
				{
					throw new ArgumentNullException("strategyToRemove", "Es wurde kein gültiges StrategyData-Objekt übergeben.");
				}

				// Löscht die Strategy aus der Collection.
				this.List.Remove(strategyToRemove);
		}


		/// <summary>
		/// Sucht nach einem StrategyData-Objekt in der Sammlung und gibt dieses zurück.
		/// </summary>
		/// <param name="strategyID">Guid der Strategie.</param>
		/// <returns>
		/// Gibt eine StrategyData-Objekt zurück, wenn die Strategie in der Sammlung gefunden wurde.
		/// Ist NULL wenn das Objekt nicht gefunden werden konnte.
		/// </returns>
		public StrategyData Find(Guid strategyID)
		{
			// Gerneriert ein StrategyData-Objekt welches mit NULL initialisiert wird.
			StrategyData toReturn = null;

			// Durchläuft die Sammlung der StrategyData-Objekte.
			foreach(StrategyData strategyOn in this.List)
			{
				// Prüft ob die strategyID dieses StrategyData-Objektes
				// mit dem übergebenem Parameter überein stimmt.
				if(strategyOn.Strategy_ID == strategyID)
				{
					// liest das momentane StrategyData-Objekt (aus der Foreach-Schleife)
					// in die lokale Variable.
					toReturn = strategyOn;

					break;
				}
			}


			// Gibt das gefundene StrategyData-Objekt zurück.
			// Ist NULL wenn das Objekt nicht gefunden werden konnte.
			return toReturn;
		}
	}

Das komplette StrategyData-Objekt zu Posten wäre zu lange. Hier aber mal der Konstruktor-Aufbau:


public StrategyData(string name, string author, string created, string desc, Mapping.MapTypes mapType)
{
// Speichert die übergebenen Parameter in private Variablen.
...
}

Dabei sind die einzelnen privaten Variablen des Objektes durch GET&SET Properties von Außen ansprechbar.

13.07.2005 - 09:02 Uhr

Die Find-Methode benutze ich beim Löschen ja auch überhaupt nicht. Das sollte ja nur mal eine Auflistung sein, was die Klassen für Methoden hat 😉

Beim Löschen übergebe ich direkt ein StrategyData-Objekt.

12.07.2005 - 16:20 Uhr

Ja genau StrategyDataist ein eigenes Objekt. Das hat nur ein paar Propertys wie Name, ID,...

Ich habe in meiner Collection lediglich
*public int Add(StrategyData) *public void Remove(StrategyData) *public StrategyData Find(Guid StrategyID)

... wobei die Find-Methode die Collection durchläuft und mein Objekt zurückgibt, wenn es gefunden wird. Wen nichts gefunden wird, wird NULL zurückgegeben.

Ich könnte bei Remove auch die Collection durchlaufen und es mit RemoveAt(Index) probieren, aber das ist ja eigentlich Quatsch weil es ja mit List.Remove genauso funktionieren müßte, oder? Habe auch nicht probiert ob ein RemoveAt funktionieren würde... werde ich gleich mal testen.

12.07.2005 - 14:53 Uhr

Hallo,

ich habe eine Klasse erstellt, die von System.Collections.CollectionBase erbt.

Nun habe ich mir eine Add und eine Remove-Methode geschrieben, die folgendes machen:


public int Add(StrategyData strategyToAdd)
{
    return this.List.Add(strategyToAdd);
}

public void Remove(StrategyData strategyToRemove)
{
    this.List.Remove(strategyToRemove);
}

Will ich nun ein StrategyData-Objekt aus meine Collection löschen, kommt folgende Fehlermeldung:

Das angegebene Element kann nicht entfernt werden, da es nicht in der Auflistung gefunden wurde.

Ich habe bereits gegoogelt aber nichts zu dieser Fehlermeldung gefunden. Ich habe auch nocht nicht weiter mit CollectionBase gearbeitet.... muss ich noch weitere Methoden implementieren um Remove verwenden zu können?

Ich habe mir auch schon in der Remove-Methode alle Einträge des Collection angezeigt. Das zu löschende Element befindet sich wirklich in der Collection.
Benötßge ich vielleicht noch so etwas wie Contains ???

Vielen Dank schon einmal für Eure Hilfe,

ciao Anke

25.05.2005 - 10:59 Uhr

Falls du wissen möchstest wie du deine ListView mit mehreren Spalten füllst (ist nicht ganz erscithlich was du genau wissen willst), dann hier ein Beispiel.


// Erstellt ein ListViewItem 
ListViewItem item = new ListViewItem();

// Füllt das ListViewItem
item.Text = "blabla";
item.SubItem.Add("Spalte 2");
item.SubItem.Add("Spalte 3");
...


// Fügt das ListViewItem der ListView hinzu.
myListView.Items.Add(item);

Ich hofe ich konnte dir damit helfen,

ciao Anke

P.S.: Habe das jetzt per Hand geschrieben, kann also sein das ein kleiner Fehler drin ist, aber im Grunde sollte es so richtig sein...

25.05.2005 - 10:54 Uhr

Hab mal eben nachgeschaut. Also das ist der Code meiner Form:


using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Threading;
using System.Timers;



namespace XXX
{
	/// <summary>
	/// Startlogo welches für 3 Sekunden beim Programmstart eingeblendet wird.
	/// </summary>
	public class Startlogo : System.Windows.Forms.Form
	{
		private System.Timers.Timer myTimer;


		private System.Windows.Forms.PictureBox PictureBox_Logo;
		/// <summary>
		/// Erforderliche Designervariable.
		/// </summary>
		private System.ComponentModel.Container components = null;


		/// <summary>
		/// Konstruktor.
		/// Lädt die Form zur Anzeige der Info über den MineScout.
		/// </summary>
		public Startlogo()
		{
			//
			// Erforderlich für die Windows Form-Designerunterstützung
			//
			InitializeComponent();

			//
			// TODO: Fügen Sie den Konstruktorcode nach dem Aufruf von InitializeComponent hinzu
			//
		}

		/// <summary>
		/// Die verwendeten Ressourcen bereinigen.
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if(components != null)
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Vom Windows Form-Designer generierter Code
		/// <summary>
		/// Erforderliche Methode für die Designerunterstützung. 
		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
		/// </summary>
		private void InitializeComponent()
		{
			System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Startlogo));
			this.PictureBox_Logo = new System.Windows.Forms.PictureBox();
			this.SuspendLayout();
			// 
			// PictureBox_Logo
			// 
			this.PictureBox_Logo.Image = ((System.Drawing.Image)(resources.GetObject("PictureBox_Logo.Image")));
			this.PictureBox_Logo.Location = new System.Drawing.Point(0, 0);
			this.PictureBox_Logo.Name = "PictureBox_Logo";
			this.PictureBox_Logo.Size = new System.Drawing.Size(480, 640);
			this.PictureBox_Logo.TabIndex = 0;
			this.PictureBox_Logo.TabStop = false;
			// 
			// Startlogo
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.ClientSize = new System.Drawing.Size(480, 640);
			this.Controls.Add(this.PictureBox_Logo);
			this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
			this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
			this.Name = "Startlogo";
			this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
			this.Text = "MineScout Center";
			this.Load += new System.EventHandler(this.Form_Load);
			this.ResumeLayout(false);

		}
		#endregion


		/// <summary>
		/// Wird beim Starten der Form ausgelöst.
		/// Es wird ein Timer deklariert, der 3 Sekunden läuft.
		/// </summary>
		/// <param name="sender">System value</param>
		/// <param name="e">System value</param>
		private void Form_Load(object sender, EventArgs e)
		{
			myTimer = new System.Timers.Timer();

			myTimer.Elapsed += new ElapsedEventHandler(OnTimer);

			myTimer.Interval= 3000;
			myTimer.Enabled	= true;
		}


		/// <summary>
		/// Beendet die Form nach Ablauf des Timers.
		/// </summary>
		/// <param name="source">System value</param>
		/// <param name="e">System value</param>
		public void OnTimer(Object source, ElapsedEventArgs e)
		{
			//wenn der Server deklariert wurde
			if(myTimer != null)
			{
				//wird wieser gestoppt
				myTimer.Stop();
			}

			this.Close();
		}
	}
}


25.05.2005 - 10:31 Uhr

Du must soweit ich weiß wirklich erst die Gruppe auslesen und dann die Mitglieder dieser Gruppe. Habe hier leider gerade kein Code, da müßte ich erst zu Hause nachgucken.... aber wie es scheint klappt das Auslesen an sich ja...

ciao Anke

25.05.2005 - 10:27 Uhr

Wie beendest du denn dein Intor-Form? Also ich habe genau sowas bereits mit einem Timer realisiert und wenn du beim Ablauf des Timers die Form mit this.Close(); beendest sollte das auch alles ganz normal klappen...

ciao Anke

15.03.2005 - 15:45 Uhr

Aha, na vielen Dank für diese Information, dann bin ich ja jetzt schlauer 😁