Fragensteller
button process ziel zur laufzeit bestimmen und abspeichern

Frage
-
Hallo.
Und zwar habe ich vor eine einfache form mit 2 Butons zu erstellen. Ist ja soweit kein Problem. Wie ich zb ein Programm oder so per Button öffne ist nicht das Problem.
Jetzt will ich jedoch nicht fest im Code integrieren welches Programm ich ausführen will, sondern dies zur Laufzeit bestimmen und dies dann auch speichern, so das beim nächsten ausführen des Programms diese Programme beim klick der buttons ausgeführt werden.
Könnt ihr mir vielleicht helfen bzw Tips geben wie ich das am besten umsetzten kann.
Bin in C# doch noch ein blutiger Anfänger und stoß bei sowas an meine Grenzen. Das Ziel zur Laufzeit zu bestimmen sowie das Abspeichern stellt mich vor ein Problem, da ich nicht weiss wie ich das anstellen soll.
Evtl kann man ja einen weiteren Button einfügen der dann einen dialog öffnet welches nach einem kennwort frägt und dann die, ich nenn es mal "umprogrammierung" der Buttons zulässt.
Sorry für die vielen Fragen, aber ich wurde bei der Arbeit von einem Kollegen gefragt ob ich ihm vielleicht sowas basteln kann. Und da ich erst alles versuchen will, das zu Lösen, bevor ich sag das ich das nich hinbekomm, dachte ich mir das ich hier mal Frage.
Schon wieder viel zu viel geschrieben, aber ich hoffe ihr versteht was ich meine und könnt mir helfen.
Mein nächster Step, sofern ich das alles mal geschafft und verstanden hab ist, zur Laufzeit weitere Buttons hinzuzufügen und position, name usw ebenfalls abzuspeichern. Aber das is noch reine zukunftsmusik.
Danke schon mal im Vorraus. Michi
- Bearbeitet humility86 Dienstag, 6. Dezember 2011 21:38
Alle Antworten
-
den Text kannst du mittels
button.Text = "Neuer Text";
ändern, bzw. mit
string text = button.Text;
auslesenPfade(also Texte) speichern geht mit
System.IO.File.WriteAllText("Pfad", "Inhalt");Auslesen einer Datei geht mit
string content = System.IO.File.ReadAllText("Pfad");Ein weiteren Dialog kannst du mittels einer neuen Form machen.
Koopakiller - http://koopakiller.ko.ohost.de/ -
Öhm, ok, aber das war nicht unbedingt das was ich wissen wollte.
Ok, es wäre natürlich auch gut den namen des Buttons zur Laufzeit zu bestimmen aber das Hauptaugenmerk leigt wo anders, und zwar geht es mir darum, das ich zur Laufzeit des tools das Ziel des buttons bestimmen kann und das tool dies beibehält, so das ich nicht bei jedem neuen Ausführen des Tools das Ziel wieder neu bestimmen muss.
-
Hallo,
dann schreibe die ermittelten Informationen in die Anwendungs-Einstellungen.
Wenn Du dafür eine Benutzer-Einstellung verwendest, kann jeder seine eigenes "Ziel" bestimmen.Gruß Elmar
-
Hi!
Ich hab mal sowas programmiert!
Zur Info:
Button1 ist zum ausführen des ersten Programms.
Button2 ist zum ausführen des zweiten Programms.
Button3 ist zum ändern des Programms, das bei Button1 ausgeführt wird.
Button4 ist zum ändern des Programms, das bei Button2 ausgeführt wird.
Die Datei pfad1.dat ist zum speichern für den Pfad des ersten Programms.
Die Datei pfad2.dat ist zum speichern für den Pfad des zweiten Programms.
Der Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string pfad1 = "";
string pfad2 = "";
private void button3_Click(object sender, EventArgs e)
{
OpenFileDialog fd = new OpenFileDialog();
fd.Title = "Bitte Datei wählen!";
fd.Filter = "Alle Dateien|*.*";
fd.ShowDialog();
pfad1 = fd.FileName;
CheckPath();
SavePath();
}
private void button4_Click(object sender, EventArgs e)
{
OpenFileDialog fd = new OpenFileDialog();
fd.Title = "Bitte Datei wählen!";
fd.Filter = "Alle Dateien|*.*";
fd.ShowDialog();
pfad2 = fd.FileName;
CheckPath();
SavePath();
}
private void Form1_Load(object sender, EventArgs e)
{
//erster pfad
if (System.IO.File.Exists("pfad1.dat"))
pfad1 = System.IO.File.ReadAllText("pfad1.dat");
else
System.IO.File.Create("pfad1.dat");
//zweiter pfad
if (System.IO.File.Exists("pfad2.dat"))
pfad2 = System.IO.File.ReadAllText("pfad2.dat");
else
System.IO.File.Create("pfad2.dat");
CheckPath();
}
//Wenn noch keine Datei gewählt ist werden die Buttons deaktiviert
private void CheckPath()
{
button1.Enabled = true;
button1.Text = pfad1;
button2.Enabled = true;
button2.Text = pfad2;
if (pfad1 == "")
{
button1.Enabled = false;
button1.Text = "Noch nicht gewählt!";
}
if (pfad2 == "")
{
button2.Enabled = false;
button2.Text = "Noch nicht gewählt!";
}
}
//Pfade speichern
private void SavePath()
{
try
{
System.IO.File.WriteAllText("pfad1.dat", pfad1);
System.IO.File.WriteAllText("pfad2.dat", pfad2);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message,"Fehler!");
}
}
private void button1_Click(object sender, EventArgs e)
{
try
{
System.Diagnostics.Process.Start(pfad1);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message,"Fehler!");
}
}
private void button2_Click(object sender, EventArgs e)
{
try
{
System.Diagnostics.Process.Start(pfad2);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Fehler!");
}
}
}
}Ich hoffe es hilft dir!
majoba-it -
@ Elmar Boye: Das klingt ganz gut. Nur hab ich mal versucht rauszubekommen wie ich da in dem sinne den Pfad des Buttons speichern kann, hab nur gefunden wie ich farbe oder so bestimmen kann, aber das will nicht wirklich so klappen.
@Majoba it: Danke für deinen Code. Als Grundgerüst erst mal echt super.
Echt super das hier einem so gut geholfen wird.
Klar muss ich mich auch einfach mal richtig in C# reinarbeiten aber tu mir halt meist leichter Sachen zu verstehen wenn ich mal Beispiele hab wie es funktionieren könnte.
-
Hallo,
Du speicherst nicht den Button, sondern den Pfad zu dem auszuführenden Programm,
also den Inhalt einer Variablen, im Beispiel von majoba-it z. B. pfad1 und pfad2Die Einstellungen kannst Du in den Projekt-Eigenschaften unter Einstellungen vornehmen.
Ein Artikel, der das weiter erläutert: C# Settings.settings in Visual Studio
Gruß Elmar
-
Jetzt hab ich doch noch eine Frage.
Wie kann ich abfragen ob mein String in Settings gefüllt ist.
Wenn ich meinen Button klicke, ohne vorher das Ziel bestimmt zu haben, kommt der Fehler das mein Prozess kein Ziel hat. Sprich ich muss zuerst das Ziel bestimmen und dann geht alles.
Um das Abzufangen muss ich ja irgendwie abfragen od der String mit dem Ziel gefüllt ist.
Hat da jemand vielleicht eine Idee?
-
Hallo,
abfragen kannst Du das z. B. mit String.IsNullOrEmpty:
if (String.IsNullOrEmpty(Properties.Settings.Default.Pfad1)) { // Schaltfläche deaktivieren this.button1.Enabled = false; }
was dann die Schaltfläche deaktiviert, wenn dort nichts hinterlegt wurde.
Wenn es sich um eine Datei handelt, könntest Du zudem mit File.Exists prüfen,
ob die Datei noch vorhanden ist.Gruß Elmar