Laden...
P
Pedro_15 myCSharp.de - Member
In der Nähe von Berlin Dabei seit 27.10.2005 375 Beiträge
Benutzerbeschreibung

Forenbeiträge von Pedro_15 Ingesamt 375 Beiträge

13.09.2006 - 11:16 Uhr

Danke funktioniert prima.

Pedro

13.09.2006 - 10:54 Uhr

Dachte ich auch.

Aber ich habe doch bei jedem aufruf eine neue Instance des Dialoges.

Und dann habe ich probiert, einfach -= vor dem += zu machen, gleiches Verhalten.

Ratlos......

Pedro

13.09.2006 - 10:44 Uhr

Hallo Ihr,

ich habe ein Problem, wenn ich ein Dialog mehrfach aufrufe (hintereinander).
Wenn ich den Dialog das zweite Mal öffne werden die Events zwei mal gefeuert und beim dritten Mal dreimal usw.

Ich hoffe, ihr könnt mir helfen. Ich habe mal den Kompletten Code des Dialoges gepostet.

Danke!

Pedro

Aufruf


private void installNewVersionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogDeployment deploymentDialog = new DialogDeployment();
            deploymentDialog.ShowDialog();
            deploymentDialog.Dispose();
            deploymentDialog = null;
            
        }

Dialog selber:


public partial class DialogDeployment : Form
    {
        long sizeOfUpdate = 0;

        private ApplicationDeployment ad;

        public DialogDeployment()
        {
            InitializeComponent();

            Cursor.Current = Cursors.WaitCursor;
            this.UseWaitCursor = true;
            ad = ApplicationDeployment.CurrentDeployment;

            ad.CheckForUpdateCompleted += new CheckForUpdateCompletedEventHandler(ad_CheckForUpdateCompleted);
            ad.CheckForUpdateProgressChanged += new DeploymentProgressChangedEventHandler(ad_CheckForUpdateProgressChanged);
            ad.UpdateCompleted += new AsyncCompletedEventHandler(ad_UpdateCompleted);
            ad.UpdateProgressChanged += new DeploymentProgressChangedEventHandler(ad_UpdateProgressChanged);
            
            UpdateApplication();

        }

        private void UpdateApplication()
        {
            if (ApplicationDeployment.IsNetworkDeployed)
            {
                ad.CheckForUpdateAsync();
            }
            else
            {
                downloadStatus.Text = "No NetworkDeployment...";
            }
        }

        void ad_CheckForUpdateProgressChanged(object sender, DeploymentProgressChangedEventArgs e)
        {
            downloadProgress.Value = e.ProgressPercentage;
            downloadStatus.Text = String.Format("Downloading: {0}. {1:D}K of {2:D}K downloaded.", GetProgressString(e.State), e.BytesCompleted / 1024, e.BytesTotal / 1024);
        }

        string GetProgressString(DeploymentProgressState state)
        {
            if (state == DeploymentProgressState.DownloadingApplicationFiles)
            {
                return "application files";
            }
            else if (state == DeploymentProgressState.DownloadingApplicationInformation)
            {
                return "application manifest";
            }
            else
            {
                return "deployment manifest";
            }
        }

        void ad_CheckForUpdateCompleted(object sender, CheckForUpdateCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                MessageBox.Show("ERROR: Could not retrieve new version of the application. Reason: \n" + e.Error.Message + "\nPlease report this error to the system administrator.");
                this.Close();
                return;
            }
            else if (e.Cancelled == true)
            {
                MessageBox.Show("The update was cancelled.");
                this.Close();
            }

            // Ask the user if they would like to update the application now.
            if (e.UpdateAvailable)
            {
                sizeOfUpdate = e.UpdateSizeBytes;

                if (!e.IsUpdateRequired)
                {
                    //\n\nEstimated Download Time: 
                    DialogResult dr = MessageBox.Show("An update is available. Would you like to update the application now?", "Update Available", MessageBoxButtons.OKCancel);
                    if (DialogResult.OK == dr)
                    {
                        MessageBox.Show("Update Start");
                        BeginUpdate();
                    }
                    else
                    {
                        this.Close();
                        return;
                    }
                }
                else
                {
                    MessageBox.Show("A mandatory update is available for your application. We will install the update now, after which we will save all of your in-progress data and restart your application.");
                    BeginUpdate();
                }
            }
            else
            {
                 MessageBox.Show("New Version is not available");
                 this.Close();
            }
        }

        private void BeginUpdate()
        {
            ad.UpdateAsync();
        }

        void ad_UpdateProgressChanged(object sender, DeploymentProgressChangedEventArgs e)
        {
            downloadProgress.Value = e.ProgressPercentage;
            String progressText = String.Format("{0:D}K out of {1:D}K downloaded - {2:D}% complete", e.BytesCompleted / 1024, e.BytesTotal / 1024, e.ProgressPercentage);
            downloadStatus.Text = progressText;
        }

        void ad_UpdateCompleted(object sender, AsyncCompletedEventArgs e)
        {
            if (e.Cancelled)
            {
                MessageBox.Show("The update of the application's latest version was cancelled.");
                this.Close();
                return;
            }
            else if (e.Error != null)
            {
                MessageBox.Show("ERROR: Could not install the latest version of the application. Reason: \n" + e.Error.Message + "\nPlease report this error to the system administrator.");
                this.Close();
                return;
            }


            MessageBox.Show("The application has been updated. Please Restart the Application.");
            this.Close();
        }


    }


12.09.2006 - 16:48 Uhr

erste Frage - hat sich erledigt.
Ich habe mageui.exe benutzt.

für die zweite Frage habe ich noch keine Lösung.

Pedro

12.09.2006 - 12:21 Uhr

Hallo Ihr,

gibt es irgendeine Möglichkeit ein chm Datei (die in dem Programm benutzt wird) mit ClickOnce mitzuverteilen.

Bei den Anwendungsdateien wird sie nicht angezeigt.
Ich bekomme die chm Datei nicht verteilt.

PS: Kann man die chm datei vielleicht in die Ressourcen packen und von da aufrufen? Macht das sinn?

Danke für die Hilfe

Und ich habe gleich noch eine Frage zu ClickOnce. Kann man auch mehrere Sartmenüeinträge machen (zum Beispiel für ein PDF Handbuch), wo sich wieder die erste Frage stellt wie kann ich das Verteilen.

Danke

Pedro

08.09.2006 - 23:47 Uhr

Verstehe ich nicht.

Welches Encoding?

Beim Schreiben des RTF Strings in die Datei oder in der RTF Definition selber?

Habe keine Ahnung wie das gehen soll?

Danke für die Hilfe!

Pedro

08.09.2006 - 14:46 Uhr

Hallo Ihr,

ich habe ein RTF Dokument erzeugt in einem String und abspeichere dieses als RTF ab.

Wenn ich dieses Dokument in Word anzeige, werden alle Umlaute nur verstümmelt angezeigt.
Wenn ich das RTF in das RTF Control lade, werden die Umlaute angezeigt.

Jetzt habe ich mal mir das rtf angeschaut. In meinem steht ein ü und in dem was word generiert steht ein 'e4.

Wie kann ich mein Problem lösen. Muss ich jetzt nach allen Sonderzeichen parsen und diese umstellen oder gibt es eine andere Möglichkeit.

Wenn nein, nach welchen Sonderzeichen muss ich denn suchen?

Den zwischen Schritt über das RTF Control laden und speichern geht leider nicht, da das laden zu lange dauert.

Danke für die Hilfe!

Pedro

31.08.2006 - 08:51 Uhr

Guten Morgen,

habe die letzten Tage viel ausprobiert und eine Lösung erarbeitet.

Das Problem ist das die Version im serialisierten File mit abgespeichert wird und diese stimmt nicht mehr, wenn das Programm neu erstellt wird. Das scheint, aber erstmal nur ein Problem zu seine, wenn man mit strong name 1 key file arbeitet.

Eine Lösung ist mit einen SerializationBinder zu arbeiten, wo man die Version mit der aktuellen Version versorgt.


sealed class SimpleDeserializationBinder : System.Runtime.Serialization.SerializationBinder
{

     public override Type BindToType(string assemblerName, string typeName)
     {
         Type typeToDeserialize = null;

         String searchString = ProgramInfo.AssemblyTitle + ", Version=";
         int searchCount = searchString.Length;
         int searchIndex = assemblerName.IndexOf(searchString);
         if (searchIndex != -1)
         {
             int versionLength = assemblerName.Substring((searchCount + searchIndex)).IndexOf(",");
             assemblerName = assemblerName.Replace(assemblerName.Substring((searchCount + searchIndex), versionLength), ProgramInfo.AssemblyVersion);
         }

         searchIndex = typeName.IndexOf(searchString);
         if (searchIndex != -1)
         {
             int versionLength = typeName.Substring((searchCount + searchIndex)).IndexOf(",");
             typeName = typeName.Replace(typeName.Substring((searchCount + searchIndex), versionLength), ProgramInfo.AssemblyVersion);
         }
         typeToDeserialize = Type.GetType(String.Format("{0}, {1}",typeName, assemblerName));

          return typeToDeserialize;
     } 
} 

Und dann muss man beim Laden einfach den Binder mit angeben.


public static void Load(string fileName)
{
            
    FileStream fileStream = new FileStream(fileName, FileMode.Open);
    System.Runtime.Serialization.Formatters.Binary.BinaryFormatter deserializer = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
    deserializer.AssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple;
    deserializer.Binder = new SimpleDeserializationBinder();
    fileStream.Position = 0;
            
    XYZ retValue = (XYZ)deserializer.Deserialize(fileStream);
    fileStream.Close();
    retValue.saveFile = fileName;
    Instance = retValue;
            
}


Der Code ist nicht ganz schön, ich habe gestern abend das ganze nur so hin programmiert, das es funktioniert.

Er funktioniert, aber zumindest bei meinem Problem.

Pedro

30.08.2006 - 10:40 Uhr

Hallo,

ich habe mein Projekt mit einem Keyfile versorgt (Assembly signieren).

Ab jetzt können nur die Objekte die ich mit der aktuellen Version serialisiert habe geladen werden.

Gibt es eine Möglichkeit auch in einer neueren Version das serialisierte Object zu laden. An dem Object hat sich nicht geändert.

Danke!

Pedro

PS: Wenn ich das Keyfile wieder rausnehme kann ich wieder alle Files laden.

29.08.2006 - 15:46 Uhr

Wenn ich mir das ganze im Worpad anschau dort funktioniert es.

Der lange Text wird geladen und unten wird der Fortschritt angezeigt.

Aber leider wissen wir immer noch nicht, wie Microsoft das macht.

Pedro

28.08.2006 - 18:49 Uhr

Da klingt sehr einfach, aber so einfach schein mir das nicht zu sein, den der RTF Text hat ein start "{" und eine Schluss "}" Zeichen und hat andere Tags die auf ein Schliessen warten, nur so ist er richtig.

Wenn ich den Text zerteile wird das nicht funktionieren, denn er ist nicht valide.

Pedro

28.08.2006 - 17:58 Uhr

Hallo Ihr,

ich habe ein Problem, wenn ich ein sehr langen RTF Text in ein RichText Control lade. Dies kann schon mal mehrere Minuten dauern.

Jetzt will ich natürlich nicht, das das Windows stehen bleibt. sondern eigentlich soll der Fortschritt angezeigt werden und auch sonst das fenster weiter zur Verfügung stehen.

Jetzt habe ich probiert das ganze in einen Tread auszulagern. Das bringt aber ja nichts, weil die Befüllung über Invoke ja wieder im Hauptthread passiert und das Fenster wieder stehen bleibt.

Habt ihr eine Idee wie ich das ganze lösen kann. Die Gold Lösung wäre das Anzeigen einer Fortschrittsanzeige.

Vielen Dank!

Pedro

26.08.2006 - 17:45 Uhr

Im Webbrowser wird das XML File ja farbig angezeigt und es lassen sich die Äste schliessen. Das möchte ich natürlich haben. Ebenso wie wenn man eine XML Datei im IE aufmacht, aber ohne eine Datei zu haben, sondern direkt aus dem XMLDocument.

Dank Pedro

25.08.2006 - 15:27 Uhr

Hallo TiTime,

entschuldige bitte das ich einwenig wage bin, aber ich habe mal gelesen, dass wenn du ein SQLServer 2005 benutzt der SQLServer ein Event bereitstellt, der deiner Applikation sagt, dass sich der Inhalt der Tabelle geändert hat.

Das wäre doch genau das Event, was du brauchst um dein Control zu aktuallisieren.

Ich hoffe, ich konnt dir das richtige Stichwort geben.

Pedro

25.08.2006 - 15:18 Uhr

Vielleicht stelle ich die Frage mal anders.

Gibt es eine Möglichkeit ein XMLDocument Object im Webbrowser Control anzuzeigen?

Ich meine das komplette XML File und nicht nur den Inhalt der XMLNodes.

Dank für die Hilfe!

Pedro

24.08.2006 - 17:21 Uhr

Leider geht das nicht.

Er wandelt das xml File in Text um und zeigt nur noch den Inhalt der XML Tags an.

Habt ihr noch eine Idee.

Vielen Dank

Pedro

24.08.2006 - 17:09 Uhr

Hallo Ihr,

ich habe ein kleine Problem. Ich will XML Dateien in einem Webbrowser Control anzeigen. Das funktioniert auch ganz klasse, aber bei allen Dateien mit registrierten Endungen wird das Control nicht gefüllt.

Gibt es eine Möglichkeit auch diese Dateien im Webbrowser Control anzuzeigen.

Kann ich die Datei, vielleicht auslesen und dann den String an das Webcontrol übergeben, ohne die Datei anzugeben?
Wie geht das?

Vielen Dank für die Hilfe

Pedro

15.08.2006 - 15:12 Uhr

Die Zuweisung findet dann so statt oder

objectList.StatusProgressChanged += new EventHandler<ProzessEventArgs>(this.sendStatusProgress);

Vielen Dank, ihr habt mir alle sehr weiter geholfen.

Pedro

15.08.2006 - 14:50 Uhr

@Traumzauberbaum

Kannst du das einwenig näher erklären???

Ein kleine CodeBeispiel wäre wirklich super.

Pedro

15.08.2006 - 13:57 Uhr

Eine ganz kleine Frage habe ich noch, die EventArgs Klasse und die Delegates Definitionen, wo legt ihr diese ab?

Legt ihr sie in extra dateien oder in eine general.cs. Ich bin da ganz unsicher.

Wie baut ihr euer projekt auf. besonders mit diesen kleinen definitionen.

Danke für die Hilfe!

Pedro

15.08.2006 - 13:45 Uhr

Colles Beispiel.

Mir geht es aber besonders darum einen einheitlichen Code zu schreiben, der von anderen auch verstanden wird.

Pedro

15.08.2006 - 13:34 Uhr

Schon klar. Ich wollte nur nicht so viel tippen.



public class ProzessEventArgs : System.EventArgs
    {
        private int maxValue;
        private int minValue;
        private string statusMessage;
        public ProzessEventArgs(int maxVal, int minVal, String message) :base()
        {
            this.maxValue=maxVal;
            this.minValue=minVal;
            this.statusMessage=message;

        }
        public int MaxValue {get{return this.maxValue;}}
        public int MinValue {get{return this.mixValue;}}
        public String StatusMessage {get{return this.statusMessage;}}

    }  
 



So ungefähr?

15.08.2006 - 13:03 Uhr

Ich muss also eine EventArg Klasse schreiben. die drei Parameter aufnimmt.



public delegate void StatusProgressEvent(object source,ProzessEventArgs args);


public void sendStatusProgress(int maxValue, int minValue, String statusMessage)
{
      if (StatusProgressChanged != null)
      {
           StatusProgressChanged(this, new ProzessEventArgs(maxValue, minValue, statusMessage));
      }
} 


so ungefähr?

Pedro

15.08.2006 - 12:52 Uhr

Hallo Ihr,

ich habe wieder einmal eine Frage. Bis jetzt habe ich so vor mich hin programmiert und jetzt möchte ich, dass alles mal einwenig ordnen.

Heute geht es um die Events



public delegate void StatusProgressEvent(int maxValue, int minValue, String status);
public event StatusProgressEvent StatusProgressChanged;

public void sendStatusProgress(int maxValue, int minValue, String statusMessage)
{
      if (StatusProgressChanged != null)
      {
           StatusProgressChanged(maxValue,minValue,statusMessage);
      }
}


So habe ich das bis jetzt gemacht.
Jetzt habe ich gelesen, das Events eigentlich zwei Parameter (object source, EventArgs args) haben. So das alle Events den selben aufbau haben.

Kling ja auch sehr gut. Nur fällt mir es jetzt schwer das obige Beispiel umzubauen.

Vielleicht kann mir ja einer auf die Sprünge helfen.

Pedro

14.08.2006 - 15:24 Uhr

Das Form weiss nichts von der Filelist, es kennt nur die Data Klasse und diese Kapselt die Filelist-klasse.

Pedro

14.08.2006 - 15:06 Uhr

Hallo,

ich habe mal eine Frage zur Umsetzung des folgenden Problems:

Ich habe ein WindowsForm Anwendung.
Die Daten, die in diesem Form angezeigt werden, werden in einer Instance der Klasse Data gespeichert. In der Klasse Data gibt es eine Reference auf eine Filelist Klasse.

Form -> Data -> Filelist

Jetzt gibt es in Filelist eine Methode zum erstellen der Filelist (Dauert ein wenig).

Diese Methode löst ein Event der Klasse Filelist - ProzessStatus aus. Dieses Event hat die Klasse Data aboniert. Die Klasse Data löst seiner seits das Event ProzessStatus aus der Data Klasse aus, wenn sie das Event aus Filelist bekommt.
Auf dieses Event kann dann die Formklasse reagieren.

Ist das so in Ordnung oder geht es auch anders ohne das Event in zwei Klassen zu programmieren.

Danke Pedro

02.08.2006 - 22:30 Uhr

Hallo herbivore,

vielen Dank, das habe ich verstanden.

Ich werde die erste Variante mal versuchen. (Klasse , Thread in Formklasse).

Schönen Abend noch!

Pedro

02.08.2006 - 22:08 Uhr

Danke herbivore,

ich soll also den Datenbankthread in eine Klasse packen.

Du hast doch letztens in einem anderen Thread von mir erzählt, das der Thread in die Formularklasse gehört.
Designfrage: Wo kommt der Thread hin

Oder sehe ich das schon wieder falsch!

Danke für die nette Hilfe!

Pedro

02.08.2006 - 21:58 Uhr

Hallo herbivore,

das verstehe ich nicht.

In der Datenbankthread Methode wird ein SQL Command Object initialisiert.

wie kann ich jetzt auf dieses Objekt von Aussen zugreifen. ohne es zentral definieren zu müssen. Ich kenne ja nur in der Worker Methode im DatenbankThread dieses Objekt.

Danke für die Hilfe!

Pedro

02.08.2006 - 21:43 Uhr

Bring mich jetzt nicht wieder durcheinander.

Ich habe den Mainthread und den DatenbankThread. Der MainThread weiss aber nichts vom inneren von des Datenbankthread.

Deswegen dachte ich, ich starte aus dem Datenbank thread nicht direkt die SQL Abfrage sondern über einen weiteren Thread. So bleibt der Datenbankthread immer aufrufbereit, um das Abbruch Signal zu bekommen.

Sehe ich daqs jetzt falsch?

Pedro

02.08.2006 - 21:26 Uhr

An zwei Thread dachte ich auch, finde ich aber ganz schön kompliziert für so ein Standardproblem.

Werde mich mal ran machen an die Umsetzung.

Vielen Dank!

Pedro

02.08.2006 - 20:48 Uhr

Hallo herbivore,

ich muss ehrlich sagen, das ich den Code nicht so richtig verstehe.

rThread2 soll das SQL Statment beenden. Diese Methode wird aber nie aufgerufen und der Haupthread ist doch blockiert (durch das SQL Statement).

Vielleicht kannst du noch einwenig Licht ins dunkel bringen.

Danke!

Pedro

02.08.2006 - 08:53 Uhr

Hallo herbivore,

danke für die Zusammenführung, ich dachte nur vielleicht verwirrt die zweite Frage.

Es gibt eine Möglichkeit ein SQL Statment abzubrechen.

Abbrechen SQl Statement

Aber wie kann ich das denn Aufrufen. Der Thread arbeitet ja noch und das Hauptprogramm weiss nichts vom SQL Command.

Pedro

01.08.2006 - 21:43 Uhr

Ja genau.

Leider konnte mir das mein Problem nicht lösen.

Pedro

01.08.2006 - 18:38 Uhr

Hallo Ihr,

ich habe ein Formular das eine Klasse initialisiert und diese Klasse ermittelt Daten.

Wo würdet ihr den Thread bauen in der Formularklasse oder in der Klasse die die Daten ermittelt? Die Fertigmeldung kommt dann per Event zum Formular.

Danke für die Hilfe!

Pedro

01.08.2006 - 18:35 Uhr

Hallo Ihr,

ich habe schon einmal versucht diese Frage zu stellen, leider habe ich keine Antwort bekommen.

Also noch einmal mein Problem:

Ich habe ein Formular MainForm das eine Datenbankabfrage an die Datenbank stellt. Diese eine Abfrage kann sehr lange dauern. Deswegen habe ich mich entschlossen ein Backroundworker zu benutzen. Dieser ruft dann, die Abfrage auf.

Soweit alle klar.

Jetzt möchte ich aber dem Anwender die Möglichkeit geben diese Aktion abzubrechen. Man kann ja dem Backroundworker sagen das er bei der nächsten Möglichkeit abbrechen soll, dieses Abbruch Flag soll man in der Worker Methode immer Abfragen. Soweit auch alles noch klar.

Jetzt mein Problem:
Wie kann ich den Backroundworker aber abbrechen, wenn die Worker Methode nur ein SQL Statment ausführt. Da ich ja keine Schleife habe die man Abbrechen kann.

Ich hoffe, ihr könnt einwenig Licht ins dunkel bringen.

Pedro

24.07.2006 - 10:50 Uhr

Ja dann wird doch aber die Abfrage bis zum ende ausgeführt oder...

Da es ja nur eine Abfrage ist die ausgeführt wird und nicht mehrere Schritte.

Ich würde gerne die komplette Abfrage abbrechen.

Oder verstehe ich das falsch.

Pedro

24.07.2006 - 09:07 Uhr

Hallo Ihr,

brauche mal wieder eine Idee, um ein Problem zu lösen.

Es geht darum, dass ich in meinem Programm eine SQLabfrage ausführe. Es stellte sich aber heraus, dass sie unter bestimmten umständen einige Sekunden brauchen kann und die Anwendung diese Zeit steht.

Jetzt wollte ich eigentlich den Backgroudworker Thread benutzen. Ich möchte aber das bevor die Abfrage startet ein Messagebox eingeplendet wird mit einem Abrechenbutton. Wenn die Abfrage an die Datenbank beendet ist, soll diese Messagebox automatisch wieder verschwinden.

Jetzt habe ich zwei Probleme:

  1. Jetzt weiss ich nicht, wie ich die Messagebox starten soll, da ja danach auf die Eingabe des Benutzers gewartet wird und nicht die Abfrage gestartet wird und wie kann ich die Messagebox wieder schliessen, wenn die Abfrage beendet ist.
  2. Wie kann ich den Backgroudworker mit der Laufenden Abfrage beenden?

Vielen Dank für die Hilfe!

Pedro

19.07.2006 - 10:34 Uhr

Hallo,

wie kann ich im Treeview verhindern das die Notes mit der Del Taste gelöscht werden.

Die Anwender haben einfach del gedrückt und konnten damit die TreeNodes löschen. Da hat der Treeview wohl mehr funktionalität als mir lieb ist.

vielen dank für die Hilfe

Pedro

08.05.2006 - 20:13 Uhr

@nowanet

Hallo nowanet,

ich wollte nur einige Stichpunkte die mir bei deinem Code aufgefallen sind ansprechen.

Im übrigen weine ich nicht, es ist ja nicht mein Code.
Wenn du immer so reagierst, wenn man dir einige nützlich Tips geben will weiss ich nicht. Du kannst natürlich weiter ein String Zeichen für Zeichen durchlaufen, um festzustellen das er nur Zahlen enthält. Und du kannst natürlich eine For schleife benutzen, statt die foreach die Extra für Listen da ist.
Und du kannst natürlich per Hand das ganze XML File durchlaufen und nicht xpath benutzen, das zum Abfragen von XML Dateien entwickelt wurde.

Trotzdem schönen Tag noch!

Pedro

05.05.2006 - 23:29 Uhr

Hallo,

ich hoffe die Antwort ist nicht so kurz, aber eine Sachen in nowanet Code könnte man einfacher regeln.

Mal einpaar Stichpunkte:

  1. Abfrage der XML Daten mit XPath (z.B. //def:bank[def:name='Deutsche Bank'])
  2. Prüfen ob nur Zahlen angegeben sind in textBox7. Dies kann man relativ leicht mit Regulären Ausdrücken testen, ohne den ganzen String zu durchlaufen.
  3. XmlNodeListen kann man besser mit der foreach Schleife durchlaufen.

XmlNode such = ausgabe.GetElementsByTagName("Banken")[0];
for(int su = 0;su < such.ChildNodes.Count;su++)
....

lieber so


foreach (XmlNode node in such.Nodes)
{
....

Wenn das zu kurz war, einfach nochmal Posten.

Pedro

05.05.2006 - 15:07 Uhr

Hallo,

bekomme ich irgendwie heraus welches SQL Statement zu einer System.Data.Common.DbException geführt hat? z.B. View nicht vorhanden?

Danke!

Pedro

21.04.2006 - 15:13 Uhr

Hallo,

kann jemand bestätigen, das diese Methode nicht funktioniert?

Ich bekomme einfach nicht den Text in einer ToolStripTextBox markiert.
Textbox funktioniert.

Pedro

PS: .Net 2.0

18.04.2006 - 12:51 Uhr

Hallo,

weiss jemand wo ich das Icon für Page Setup herbekomme?

Danke!

Pedro

18.04.2006 - 11:35 Uhr

Hallo,

kann ich die Papiergrösse eines RichTextControlls einstellen?

Sie soll beim Abspeichern, beim Anzeigen und beim Drucken berücksichtigt werden.

Danke für die Hilfe!

Pedro

14.04.2006 - 12:10 Uhr

Hallo,

leider konnte ich die letzten zwei Tage nicht.

Ich meinte folgenden Ansatz mit einer Klasse für Threads.

Pedro

PS: Der Code ist aus dem Tutorials.de Forum.


using System;
using System.Threading;
using System.Windows.Forms;

namespace ThreadTest
{
	public class WorkerThread
	{
		protected Thread _Thread;
		protected bool _StopRequest;

		public Thread GetThread {
			get { return _Thread; }
			set { _Thread = value; }
		}

		public bool StopRequest {
			set { _StopRequest = value; }
		}

		public string State {
			get {
				if ( _Thread != null )
					return _Thread.ThreadState.ToString();
				else
					return ThreadState.Unstarted.ToString();
			}
		}

		public WorkerThread() {
			_StopRequest = false;
		}

		public void StartThread() {
			if ( _Thread == null || ( _Thread != null && !_Thread.IsAlive ) ) {
				_StopRequest = false;

				_Thread = new Thread( new ThreadStart( Run ) );
				_Thread.Start();
			}
		}

		protected void Run() {
			try {
				while ( !_StopRequest ) Thread.Sleep( 0 );
			}
			catch {}
			finally {}
		}
	}
}


public static void Main() {
	WorkerThread thd = new WorkerThread();
	MessageBox.Show( "Thread State = " + thd.State.ToString() );
	thd.StartThread();
	System.Threading.Thread.Sleep(500);
	thd.StopRequest = true;
	MessageBox.Show( "Thread State = " + thd.State.ToString() );			
}

12.04.2006 - 12:12 Uhr

Hallo,

an "partial" habe ich auch schon gedacht, aber meine ersten Versuche damit haben nicht funktioniert. Er hat die Klasse nicht unter das Form gehängt sondern extra in der Projektmappe.

Wenn ihr Threads programmiert, benutzt ihr eigene Threadklassen dafür?
Wenn ja wie realisiert ihr die invoke methoden?

Danke für die Infos!

Pedro

12.04.2006 - 11:53 Uhr

Hallo,

ich habe ein sehr umfangreiches Formular mit vielen Funktionen.

Jetzt habe ich mal eine Frage zum Class File. Es ist sehr unübersichtlich.

Im Class File sind sehr viele

  • FormEvents
  • Invoke Methode zum setzen aus einem Thread
  • Eigene Event Methoden
  • Delegates
  • Thread Methoden usw.

Kann ich da irgendwas machen um das einwenig aufzuräumen.

Wie macht ihr das?

Kann ich die Threads und Invokes in extra classen auslagern?

Danke!

Pedro

07.04.2006 - 16:16 Uhr

Problem ist gelöst.

Die form Objecte werden an das Form oder an die Container mittels Controlls.Add angefügt. Damit werden sie angezeigt.

Danke für die Hilfe!

Pedro

06.04.2006 - 14:03 Uhr

Beim Docking Fenster funktioniert das mit dem Designer nicht.

Pedro