Also zu allererst meine Antwort könnte etwas Java Lastig sein, aber
da C# und Java sich sehr ähneln wirst du dies übertragen können:
Nutze Klassenmethoden, sprich static Methoden.
Code:
public class PrefsReader() {
public static String[] read() {
// auslesen und irgendwo speichern & zurueckgeben
return data;
}
}
..... formular 1
private void foo() {
String[] prefs = PrefsReader.read();
}
formular 2
private void foo() {
String[] prefs = PrefsReader.read();
}
Da statische Methoden der Klasse und nicht der Instanz der Klasse angehören, kann mann auf sie ohne eine entsprechende Instanz diese aufrufen.
Dennoch ist dieses Beispiel Schlecht da mann zwar ueberall wo die Einstellungen benoetigt werden nur eine Methode aufrufen muss, dennoch wird immer wieder diese Einstellungen gelesen. Darum bietet es sich an in der Applikationsinstanz diese Einstellungen einmal zu lesen und den einzelnen forms zur verfuegung zu stellen
Code:
class Application {
public Application() {
String[] prefs = new PrefsReader().read();
formular1.setPrefs(prefs);
formualr2.setPrefs(prefs);
}
}
Vorteil ist:
Beide Formulare haben Referencen auf ein und die selben Einstellungen.
Dennoch würde ich auch dieses nicht tun. Java und wohl auch .net bietet einen die Möglichkeiten auf
spezielle Klassen zuzugreifen:
Code:
public class Test {
public Test() throws IOException {
Properties p = new Properties();
p.load(getClass().getResourceAsStream("test.properties"));
String name = p.getProperty("test.name");
System.out.println(name);
}
public static void main(String[] args) {
try {
Test test = new Test();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Diese lesen vorgefertigte Properties fuer jede einzelne Klasse aus. Oder wenn mann es noch flexibler braucht:
Code:
/**
* @author holyfly
*
* (c) by holyfly
*/
public class PrefMain {
public PrefMain() throws BackingStoreException {
Preferences prefs = Preferences.systemNodeForPackage(getClass());
prefs.put("Test.System","geht");
prefs.flush();
}
public void showPrefs() {
Preferences prefs = Preferences.systemNodeForPackage(getClass());
System.out.println(prefs.get("Test.System","default"));
}
public static void main(String[] args) {
try {
PrefMain p = new PrefMain();
p.showPrefs();
} catch (BackingStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Dies verhaelt sich so das es je nach Plattform entweder direkt in die Registrie oder in die Konfigurations ordner /etc/.java/ schreibt. Zudem gibts die möglichkeit zwischen Systemweite Einstellungen oder diesen User spezielle Einstellungen zu nutzen. Der Vorteil liegt auf der Hand, wenn bei deinem Programm der Windows User ay seine Datenbank verbindung dort ablegt, kann sie User gh nicht lesen und nutzen.
Textfiles bzw auch XML Files koennen dir diese einfachen und wertvollen Dienste so einfach nicht bieten. Drum schlag MSN auf und suche nach einer Preferences Klasse oder aehnliches.