Laden...

Forenbeiträge von Jesfreric Ingesamt 40 Beiträge

05.01.2017 - 11:59 Uhr

Liebe Community

Ich hätte eine Frage zu einem Web-Projekt.
Das GUI einer Webanwendung wird dynamisch mit Hilfe einer Tabelle erstellt. Diese Tabelle besteht aus X Zeilen (Anzahl variabel) und 3 Spalten. Innerhalb der einzelnen Zellen befinden sich weitere UI Elemente. Soweit funktioniert der Aufbau sehr gut. Das Problem sind die Ereignismethoden einer DropDownList-Komponente innerhalb einer bestimmten Zelle.
Da die Tabelle dynamisch erstellt wird, wird die DropDownList nicht im ASP.NET code deklariert sondern erst im c# Code. Die UI Elemente werden später in eine Session-Variable geladen (vorher aber mit der Ereignismethode versehen).
Die Ereignismethode "Load" feuert ein Ereignis, "SelectedIndexChanged" allerdings nicht. Habt ihr eine Idee? Ich habe schon die beiden Varianten ausprobiert:

Es gäbe sozusagen folgende Abhängigkeiten:
Panel->Tabelle->Row->Cell->DropDownList


cmb.SelectedIndexChanged += cmb_SelectedIndexChanged;

sowie


cmb.Attributes.Add("onselectedindexchanged", "true");
cmb.Attributes.Add("autopostBack", "true");

Viele Grüße
Jesfreric

11.09.2016 - 14:52 Uhr

Wie richte ich eine solche port-weiterleitung ein? Reicht es da wenn ich den port 21 auf der fritzbox unter freigaben einrichte?

11.09.2016 - 13:59 Uhr

Komischerweise bekomme ich über FileZilla gar keine Verbindung zum FTP Server. Ich habel bis jetzt immer eine Verbindung mittels iexplorer versucht.
Vielleicht noch eine Idee:
In den Einstellungen meiner fritzbox stand,dass ich (wenn ich dieses Häkchen setze) übers internet auf den router und entsprechende Geräte zugreifen kann. Außerdem habe ich den zugriff mittels ftp freigegeben. Das einzige was ich nicht gemacht habe war unter den fritzbox "freigaben" noch zusätzlich einen ftp port freizugeben weil das so dort nicht drinnen stand....

11.09.2016 - 12:42 Uhr

Hi

Danke für eure Antwort. Leider wird trotz (mit Sicherheit) richtiger Anmeldedaten nur die robots.txt angezeigt. Ich bin mir aber sicher, dass ich die Freigaben geregelt hab...
Ich müsste also nicht den Router im Anmeldenamen mit Zwischenschalten?

Grüße
Jesfreric

10.09.2016 - 20:53 Uhr

Hi

Danke für deine nachricht und dein feedback. Ich dachte schon,dass es das falsche forum ist,aber ich bekomme hier immer so gute antworten. Tut mir leid...
Ich werde das dann gleich nochmal probieren...
Würde der benutzer dann so angegeben?
ftp://user@AAA.BBB.CCC.DDD

viele grüße
Jesfreric

10.09.2016 - 18:08 Uhr

Liebe Community

Ich habe ein "Anfänger-Verständnis-Problem". Ich hoffe ich bin in dieser Rubrik richtig...
Ich wollte von extern auf mein NAS via FTP zugreifen. Das NAS ist via RJ-45 an meinen Router angeschlossen. Sowohl auf meiner Fritz-Box (Adresse AAA.BBB.CCC.DDD) und im NAS (Adresse EEE.FFF.GGG.HHH) habe ich in den Einstellungen Benutzer angelegt und alle entsprechenden Freigaben geregelt. Normalerweise sollte alles gehen.
Leider funktioniert ein externer Zugriff nicht. Weder via Edge, IExplorer und FileZilla. Was mache ich falsch?

Was muss in der Adressleiste stehen?
Bisher habe ich immer:
ftp://EEE.FFF.GGG.HHH:21 eingegeben.
Dort kommt aber lediglich:

"FTP Stammverzeichnis auf EEE.FFF.GGG.HHH" und es ist lediglich eine Datei Namens "robots.txt" angegeben?

Muss ich evtl. die Router Adresse noch davor schreiben, oder den Benutzernamen und Passwort? Wenn ja wie schaut die Eingabe genau aus?

Viele Grüße und vielen Dank
Jesfreric

25.08.2016 - 14:55 Uhr

Ohhh mannn...eigentlich logisch 😉

Danke!!!

25.08.2016 - 13:39 Uhr

Liebe Community

Ich habe ein kleines Problem. Ich möchte einen Dateipfad (den ich mittels OpenFileDialog auswähle) in den Settings (System.Settings.Default.sVMPath) speichern. Leider wird der Wert nur vorübergehend, aber nicht nach einem Neustart gesichert:

Hier ist der Code

        public void ChoseVMPath()
        {
            OpenFileDialog objOFD1 = new OpenFileDialog();
            objOFD1.Filter = "vmx files (*.vmx)|*.vmx";
            objOFD1.Title = "Please select the Virtual Machine";
            if (objOFD1.ShowDialog() == DialogResult.OK)
                Properties.Settings.Default.sVMPath = objOFD1.FileName;
        }

Weiß jemand einen Rat?

Viele Grüße
Jesfreric

24.07.2016 - 12:37 Uhr

Liebe Community

Ich hätte eine kurze Frage an euch. Ich programmiere derzeit an einer Software die mit einer Art "Hauptfenster" startet. Dort können über 5 Buttons weitere "Untermenüs" geöffnet werden. Dabei ist das jeweilige vorhergehende Menü komplett nicht mehr sichtbar.

Meine Frage wäre: Wie würdet ihr den Aufbau organisieren.

Mehrere "Windows Forms" die neu aufgerufen werden (die anderen werden über Hide unsichtbar gemacht), oder habt ihr ein "Windows Forms" Fenster, was mit verschiedenen Panels gefüllt wird.

Viele Grüße
Jesfreric

04.07.2016 - 09:21 Uhr

Hallo

Danke für eure Antworten=)

Ich werde die Problematik noch einmal mit unserer örtlichen IT besprechen und mich dann nochmal bei euch melden=)

Viele Grüße und vielen dank
Jesfreric

28.06.2016 - 10:52 Uhr

Hallo Abt

Vielen Dank für deine Antwort. Bitte entschuldige die "Laienhafte" Fragestellung 😃

Wegen den 300 Datensätzen pro Tag...Also es kämen praktisch jeden Tag 300 Datensätze neu dazu. Das wären dann im Monat ungefähr 7000 Datensätze, im Jahr dementsprechend 80 k.
Sollte man bei so einer Zahl wirklich noch mit XML Dokumente arbeiten?
Die Daten sollten auch immer abrufbar sein...

Viele Grüße
Jesfreric

28.06.2016 - 09:40 Uhr

Liebe Community

Ich hoffe ich liege mit meiner Frage hier in dem Bereich nicht völlig falsch. Bitte entschuldigt, falls ich völlig dumme Fragen stelle, aber Datenbanken sind noch ziemliches Neuland für mich…
Ich soll an meiner Arbeitsstelle eine Art „Middleware“ für bestimmte Laborbefunde schreiben. Die Ideen meiner Vorgesetzten lassen sich gut realisieren denke ich, allerdings bin ich etwas unsicher was die Verwendung der Datenbank betrifft.
Der Workflow sieht folgendermaßen aus:

  1. Am Messgerät werden von einem Mitarbeiter Proben vermessen und die Ergebnisse später (mit Hilfe einer Middleware) kontrolliert, eingegeben, etc….
  2. Die Daten werden von der Middleware aus an eine extra dafür installierte Datenbank übergeben
  3. Unsere Endvalidierer (zwischen 5-10 Personen) kontrollieren diese Werte
  4. Nach deren Freigabe werden die Ergebnisse in unsere Zentrale Labordatenbank übergeben

Der Workflow an sich ist sehr statisch, sodass wenig „Veränderungen“ möglich sind. Kopfzerbrechen bereitet mir die Datenbank. Es werden täglich (an Wochentagen) bis zu 300 neue Datensätze eingespielt.
Meine Fragen wären, bezogen auf die Datenmenge…

  1. Welche Datenbank sollte ich verwenden?
    • MySQL, Oracle SQL, etc.
  2. Welche Installation ist sinnvoll?
  • sollte die Datenbank lokal auf einem leistungsstarken Rechner (an dem das Messgerät angeschlossen ist) installiert werden und die Datenbankdateien in unserem Netzwerk freigegeben werden – immerhin wären es vielleicht gerade einmal 10 Rechner die parallel darauf zugreifen würden
  • oder sollte die Datenbank auf einem unserer zentralen Serversysteme laufen
  • falls ja, wie erfolgt hier eine Installation – ist diese äquivalent zu oben? (Aufspielen der Datenbank + Freigabe der Datenbankdateien?)

Viele Grüße
Jesfreric

07.06.2016 - 17:58 Uhr

Ein kurzes Update:
Das Problem konnte tatsächlich extrem simpel gelöst werden.
Ich musste lediglich das Gerät mit dem Adapter und anschließend mit dem PC verbinden.
Im Anschluss wurde im Gerätemanager, den Settings der Virtual Machine (USB und Serial Port) und der Software vom MS-DOS der gleiche COM-Port ausgewählt. Und schon läuft das Ding...

Hätte ich nicht gedacht...

Danke an alle die sich die Zeit genommen und geantwortet haben 😉

28.05.2016 - 12:37 Uhr

Genau DAS was ich gesucht habe 😃 😃

Hab ganz ganz vielen Dank 😃

27.05.2016 - 12:13 Uhr

@thomas.at

Ist das tatsächlich so einfach? Das hätte ich mir im Leben nicht träumen lassen....Die VM mit DOS + Software läuft schon. Ich habe jetzt eine Woche Urlaub, danach schaue ich es mir aber gleich nochmal genau an 😃

Viele Grüße
Jesfreric

26.05.2016 - 22:19 Uhr

Liebe Community

Ich bin gerade dabei ein dynamisches Windows Form zu programmieren.
Dazu habe ich einige Buttons die regelmäßig angeordnet werden sollen (Abstand zwischen rechtem und linken Button vom Rand soll dabei identisch sein).

Der Abstand des Buttons vom Rand ist jetzt mal iLXcmd = 40;
Die Gesamtfensterbreite ist iDXmain = 600;
Die Breite des Button ist iDXcmd = 100;

Die Methode .Location = new Point( iLXcmd, 80) richtet sich ja am linken oberen Rand des Steuerlements aus. Für den linken Button ist das ja schön und gut, für den rechten bereitet mir das aber Probleme. Ich habe versucht den rechten Button wie folgt auszurichten:
.Location = new Point(iDXmain - iDXcmd - 40, 80)

Leider führt dies nicht zum gewünschten Ergebnis. Der Abstand ist nicht zu dem vom linken identisch...
Meine Frage. Gibt es eine Möglichkeit die .Location Methode auf "Top-Right" des Steuerelements anzuwenden?

Viele Grüße
Jesfreric

24.05.2016 - 11:55 Uhr

@ kuppi

Zu 90% alles richtig 😃 Der Unterschied ist nur, dass ich nicht an sich versuchen möchte eine neue Software zur Bedienung, etc. zu schreiben, sondern die alte Software einzubinden. Die Auswertungsalgorithmen die da programmiert wurden, bestimmte Gerätekonfigurationen, etc. sind nicht mehr nachvollziehbar von außerhalb (so schätze ich das zumindest ein).

Bisher war es sozusagen immer so..

Software <=> MS-DOS <=> RS232 <=> Gerät

Und ich möchte das so haben:

Software <(1)=> Virtual Machine (mit MS-DOS) <(2)=> Win7(e.g.) <(3)=> USB <(4)=> USB-RS232-Adapter <(5)=> RS232 <(6)=> Gerät

Schnittstelle (1) - sollte ja die Software und das MS-DOS auch in der Virtual Machine schon mit sich bringen

Schnittstelle (3) - sollte durch den Adaptertreiber und ein bisschen c# zu realiseren sein

Schnittstelle (4)/(5) - ist ja rein elektromechanisch durch die Adapter

Schnittstelle (6) - ist ja Gerätintern

Probleme machen mir Schnittstelle (2) und evtl. (3). Ich hätte dann sozusagen 2 voneinander verschiedene System, die ich irgendwie miteinander verknüpfen müsste...
Ist so etwas möglich?

Viele Grüße
Jesfreric

24.05.2016 - 11:00 Uhr

Hi

Ja, du hast recht. Es ist ein "Photometer-ähnliches" Gebilde 😃
Wie ich Daten in C#, etc. einlese habe ich mir schon einmal angeschaut. Das sollte soweit passen. Wie schaffe ich es dann aber, dass MS-DOS bzw. die Geräte-Software auf "die Ergebnisse" meines c# Skriptes zugreift. Bzw. was steuere ich denn in meinem Skript dann genau an. Das ist mir irgendwie noch unverständlich...

Viele Grüße
Jesfreric

24.05.2016 - 10:06 Uhr

Hi

Danke für deine Antwort. Das ist ein Uralt-Gerät mit dem Namen SLT-Spectra.

Nur damit ich es richtig verstehe (für Dummies sozusagen 😃 )
Wenn das Gerät an den PC angeschlossen wird (jetzt ohne USB, sondern im Falle des alten DOS-PC), dann sendet es bei einer Messung ja über den jeweiligen Port (wahrscheinlich Nr. 2 TD - Transmit Data) eine Spannung (zw. -3 V bis -25V oder 3 V - 25 V). Der geht über den Port 3 des PC-Anschlusses (RT - Recieve Data) zum Computer. Der Datentransfer erfolgt mittels einer schnellen Spannungsänderungen (1-0-0-1-1-1-0-0-0). Eine Einheit ist jeweils ein Bit, die dann im Gesamten mittels ASCII in Daten bzw. Code übersetzt werden können. Die Anzahl der Bits/Sek. ist die Baud-Rate oder?
Ich kann auch verstehen, dass die Software diese Signale registriert, die über den Port kommen und entsprechend weiterverarbeitet.
Hab ich das soweit richtig verstanden, weil mir ist das wichtig zu verstehen was passiert 😃
Meine Verständnisschwierigkeit besteht nun darin im genauen zu verstehen wie der PC (ob XP, Dos, oder Win10) die Spannungsänderung registriert, diese Informationen speichert und die Software in Echtzeit darauf zugreift...

Viele Grüße
Jesfreric

24.05.2016 - 09:23 Uhr

Liebe Community
Ich stehe vor einem Verständnisproblem. In unserer Firma haben wir jahrelang ein altes Analysegerät über einen alten MS-DOS Computer laufen lassen (Mittels RS232). Das Gerät besitzt zwar ein kleines Display für die Steuerung, allerdings haben wir immer eine extra dafür geschriebene Software (im DOS) für die Steuerung und Auswertung verwendet.
Wir sind jetzt leider gezwungen von dem DOS System wegzugehen und das Gerät zukünftig auf neueren Betriebssystemen laufen zu lassen.
Ich habe mir dazu einen RS232-USB Adapter verschafft. Außerdem besitze ich noch die Treiber und die Geräte-Software selber auf Diskette. Meine Frage wäre nun, wie ich das Teil am besten an einen (e.g. XP-Rechner) anschließen kann.
Ich hatte mir überlegt, dass ich zunächst ein altes DOS-System auf den Rechner spiele (evtl. als Virtual Machine oder dergleichen – dann kann ich die Daten später weiter prozessieren). Als nächstes hätte ich die Software auf der Virtual Machine installiert. Meine Frage ist nun, was muss ich tun, damit die Software im DOS in der Virtual Machine kapiert, dass an dem USB Port das Gerät hängt was sie braucht.
Zum Gerät und Zur Software gibt es ein Handbuch, in denen die einzelnen Belegungen der 9 Ports des RS232 genaustens beschrieben sind. Mir geht es eher um den Ansatzpunkt, an dem (z.b. ein c# Skript) angreifen müsste.
Viele Grüße
Jesfreric

23.05.2016 - 14:03 Uhr

Liebe Community

Wir haben an meiner Arbeitsstelle teils neue, teils sehr alte Computer mit den verschiedensten Office-Versionen.
Ich habe ein kleines Programm geschrieben was auf Office 2013 zugreift. Soweit so gut. Auf allen Computern mit Office 2013, Office 2007 funktioniert das Programm tadellos, auf den Computern mit älteren Versionen bricht das Programm beim Herstellen der Office Verbindung ab.

Gibt es dafür eine Lösung?

Viele Grüße
Jesfreric

23.05.2016 - 11:00 Uhr

Blödsinn...

Wenn ich das Skript über den TaskScheduler ausführe, brauche ich den FileSystemWatcher ja gar nich..

23.05.2016 - 10:54 Uhr

Hi

Danke für euren ganzen Antworten. D.h. ich werde mein Skript nochmal mit der "FileSystemWatcher" Klasse überarbeiten und es dann einfach über den Task Scheduler alle 5 Sekunden ausführen lassen.

Danke 😃
Jesfreric

23.05.2016 - 10:07 Uhr

@ Coffeebean

Danke für deine Antwort 😃
Ich werde deinen Hinweis beachten.

Grüße
Jesfreric

23.05.2016 - 10:06 Uhr

Liebe Community

Wahrscheinlich (wieder) eine Anfängerfrage...
Ich habe ein kleines Skript geschrieben, was einen speziellen Ordner auf dem Computer überwacht (Mittels Timer alle 5 Sekunden). Falls diverse Files vorhanden sind, werden diese konvertiert und später gelöscht.
Meine Frage ist nun, wie bekomme ich das Skript "dauerhaft" zum laufen.
Ich habe keine Windows-Forms, weswegen ich eine Konsolenanwendung mittels Visual Studio erstellt habe. Sobald ich das Skript aber ausführe ist es auch schon wieder beendet...
Was mache ich falsch?
Ich würde die .exe später in den Autorun Ordner des PC's verschieben, sodass sie bei jedem Neustart gleich ausgeführt wird...

Viele Grüße
Jesfreric

23.05.2016 - 10:02 Uhr

Hi

Danke für eure Antworten. Ich habe jetzt eine Setup.exe erstellt. Damit sollte es gehen.
Noch eine kurze Frage...

Woran kann es liegen, dass der Release Ordner bei mir leer ist und die .exe nicht vorhanden ist?

Grüße
Jesfreric

23.05.2016 - 08:36 Uhr

Liebe Community

Hier kommt wieder eine typische Anfängerfrage. Ich habe mein erstes kleines Programm mit Visual Studio Community abgeschlossen und möchte es nun abschließen um es auf diversen anderen Computern zu verwenden.
Wäre es besser, wenn ich mir lediglich die .exe Datei aus dem Debug Ordner hole, oder gibt es eine bessere Art und Weise (Erstellen einer Setup-Datei oder so etwas). Es handelt sich wie gesagt nur um ein kleines Programm, dass nur aus 1-2 Windows Forms besteht und nicht komplex ist.

Viele Grüße
Jesfreric

18.05.2016 - 13:12 Uhr

Liebe Community

Ich hätte eine Frage an euch. Ich bin gerade dabei ein kleines Programm zu schreiben. Es soll nur eine .exe sein, die ein paar Pfade vom Nutzer abfragt und die Dateien unter diesen Pfaden weiter prozessiert.
Ich würde dem Nutzer (auch nach jedem Neustart) gerne den letzten Pfad anzeigen, den er verwendet hat.
Welche Lösung wäre besser? Sollte ich die Pfade in einer .txt abspeichern und dann jedes Mal neu lesen/schreiben, oder ist es besser die Pfade in der Registry abzulegen?

Viele Grüße
Jesfreric

10.05.2016 - 11:52 Uhr

Alles klar 😃
Ich schreibs mir hinter die Ohren 😉

10.05.2016 - 11:32 Uhr

@ ErfinderDesRades

😃 😃 Ich finde konstruktive Kritik im Moment sehr sehr gut. Ich komme eigentlich aus einem ganz anderen Bereich, habe mich aber die letzten 2 Jahre (arbeitsbedingt) mehr und mehr mit Programmierung beschäftigt. Mittlerweile macht mir das so großen Spaß, dass ich gerne einen Quereinstieg in die Branche versuchen möchte. Leider fällt mir aber auf, dass mir einfach simple Grundlagen fehlen, die ich durch meine bisherigen Erfahrungen, bzw. durch die Bücher die ich lese nicht erarbeiten konnte. Ich habe mich eher zum Wald- und Wiesen Programmierer entwickelt, weswegen es gut tut, dass ich von "echten" Programmierern ein Feedback über meine Denkweisen und Arbeit bekomme....nur so komme ich weiter 😃

10.05.2016 - 11:26 Uhr

Hi

Danke für den Link. Jetzt mal eine blöde Frage. Warum empfiehlt sich hier die Verwendung einer Eigenschaft und nicht einer Variablen?
Bzw. sollte man sich grundsätzlich angewöhnen Eigenschaften zu verwenden, wenn Daten zwischen Klassen ausgetauscht werden sollen und Variablen dann eher nur intern Nutzen? Weil man könnte theoretisch ja eine Variable auch mit Referenz übergeben,...auch wenn dann etwaige Änderungen schlechter kontrolliert werden können...
Grüße
Jesfreric

10.05.2016 - 11:08 Uhr

Oh Schreck
Ich befürchte schon, dass es eine "public deklarierte Variable" ist.

Bei Eigenschaften können (soweit ich das richtig verstanden habe) doch die set und get Methode überschrieben werden, was ich hierbei aber nicht mache(bzw. nicht als notwendig erachten würde.

Besagte Variablen/Eigenschaften sind Strings, die den Pfad eines FolderBrowserDiaglogs bzw. OpenFileDialogs speichern und später von frmH abgerufen werden sollen.

Viele Grüße
Jesfreric

10.05.2016 - 08:46 Uhr

Sehr schön:-)

Scheint gut zu klappen. Meine frmU Button haben jetzt das Commando "Close()" und definieren ein DialogResult als OK oder Cancel.

In meinem frmH wird dann das DialogResult abgefragt und die public deklarierten Variablen direkt vom Objekt f1 der Klasse frmU abgefragt.

Hab vielen Dank! 😃

Gruß
Jesfreric

10.05.2016 - 08:28 Uhr

Hi

Danke für deine Nachricht. Auf die Art und Weise habe ich es ursprünglich gemacht. Ich habe aber folgendes Problem damit...
Wenn ich auf den "Apply" oder "Cancel"-Button meiner frmU gehe, dann "Dispose()" ich die Form. Deswegen kann ich nach dem Verlassen von „ShowDiaglog()“ in meinem frmH-Code ja keine Werte mehr von frmU abfragen,...weil das Objekt ja nicht mehr existiert.
Wäre es dann besser, wenn ich den „Apply“ oder „Cancel“ Button nicht mit Dispose() sondern „Close()“ oder „Hide()“ bestücke? Dann könnte ich im frmH die Daten von frmU auslesen und danach im Skript das frmU mit f1.dispose() schließen.

Oder gibt es einen besseren Weg?

Viele Grüße
Jesfreric

09.05.2016 - 14:48 Uhr

Ha, man mags kaum glauben, aber ich denke mir ist es nun klar was static bedeutet 😃
Der Punkt, dass Sie bei der Instanz einer Klasse nicht neu „gebildet“ wird, sondern sozusagen schon die ganze Zeit da ist, war für mich bis jetzt nicht klar.

Nochmals vielen Dank an alle die geantwortet haben. Solltet ihr noch Zeit haben würde ich mich freuen, wenn ihr mir noch bei der EventHandler-Frage helfen könntet 😃

09.05.2016 - 13:34 Uhr

@ LaTino

Danke für deine Nachricht. Versprochen, ich lass die Finger davon, es geht nur rein ums Verständnis 😃

Würde ich jetzt also in einer Klasse Test einen public static Integer iA deklarieren und den Wert auf 0 setzen, dann gilt er für alle Objekte der Klasse Test, oder?
Sollte ich also später 5 weitere Objekte der Klasse Test deklarieren, wäre iA immer 0. Außer ich würde iA irgendwann auf z.b. 1 setzen, dann würde iA in allen vorhandenen/und zukünftigen Objekten auf 1 gesetzt oder?

Viele Grüße
Jesfreric

09.05.2016 - 13:22 Uhr

Hallo

Habt vielen Dank für eure Nachrichten.
Dann werde ich mein Programm noch ein bisschen abändern.
Ich habe mir den "FAQ"-Abschnitt zu diesem Thema schon einmal zu Gemüte geführt, war mir aber danach noch etwas unsicher.
Wie beispielsweise verwende ich beim Schließen der frmU einen EventHandler?

Kann ich den "Schließen-Button" meiner frmU über einen EventHandler direkt mit der frmH verknüpfen, bzw. liefe das dann über "DialogResult"-Abfragen.

Zwecks static habe ich wohl etwas falsch verstanden. Stimmt es aber dann trotzdem, dass wenn ich eine static-Variable ändere, sie in allen Objekten automatisch geändert wird?
In dem Fachbuch steht:
"Sie (=Static Variable) steht innerhalb der Klasse allen Objekten gemeinsam zur Verfügung, sie wird also von den Objekten gemeinsam genutzt"...vorher steht noch, dass es die statische Eigenschaft pro Klasse nur einmal gibt, unabhängig der erzeugten Objekte.

Viele Grüße
Jesfreric

09.05.2016 - 11:11 Uhr

Liebe Community

Ich habe eine typische Anfänger-Unverständnis-Frage wenn es um die Weitergabe von Variablen zwischen zwei Forms geht. Meine „Hauptform“ ist frmH und meine daraus aufgerufene Form „frmU“.
Ich habe einmal den Satz gehört, dass eine „Unterform“ (in diesem Fall frmU) nicht wissen darf/brauch , dass es seine Hauptform (frmH) überhaupt gibt. Das heißt ein Übergeben von Variablen in frmU mittels:
stVariable = frmH.stTest;
gilt als nicht sonderlich „edel“.

Ich habe deswegen das Übergeben von Variablen dann mittels eigener Methoden in frmU realisiert. D.h. ich hatte in frmU immer 2 Methoden

  1. public void setValues(String stA)
  2. public String getValues(Int iA)

Meine Code in der Hauptform (frmH) sah dann in etwa so aus:


….
frmU f1 = new frmU();
f1.setValues(stTest);				//hier hat frmU die notwendigen Werte bekommen
…


Und später


….
stTest = f1.getValues(1)		//Hier hat die frmH eine bestimmte Variable von frmU bekommen

Vor kurzem habe ich in einem Fachbuch allerdings einen Hinweis gelesen, dass eine Übergabe
wohl eher (wenn ich das richtig verstanden habe) via Übergabe der „Objektreferenz“ selber
geschieht.
Das heißt frmU wird so gestrickt:


//Code aus frmH

frmU f1 = new frmU(this);

…

Public partial class frmU : Form
{
   private frmH fRoot;
   public String stVariable;

   Public formU( frmH fTemp)
   {
     fRoot = fTemp
     stVariable = fTemp.stTest

   }
}


Soweit so gut.
Allerdings hätte ich dazu 2 Fragen:

  1. Welcher der zwei Wege ist der „bessere“?
  2. Warum bekomme ich eine Fehlermeldung wenn ich die Variable aus frmH mit „public static“ deklariere? Wenn ich das static weglasse, dann geht es. Static heißt doch eigentlich nur, dass sich eine Änderung der Variable auf alle Objekte (auch bestehende) dieser Klasse auswirkt. Das wäre ja das was ich möchte.

Viele Grüße
Jesfreric