Strg-P brauche ich in den meisten Programmen zum Drucken. Ich würde jedes Programm von der Festplatte verbannen, das mir meine wichtigsten Tastatur-Shortcuts klaut.
Ja war nur ein beispiel das Short cut sollen die user nach möglickeit selbst wählen können.
hab die datei einfach aufen Root-Server von mir gespeichert und hab sie von da aus geladen ;)
hab aber noch eine frage und zwar würde ich gerne per Tasten bindings z.b. Die Taste Play aktvieren... wenn ich strg + p drücke. Dies soll auch funktionieren wenn das programm sich im hintergrund befindet.
Wenn ich das richtig verstanden habe müsste es dann so aus sehen.
using (StreamWriter sw = new StreamWriter("Notiz.txt"))
{
for (int i = 0; i ≤ zahl; i++)
{
foreach (DirectoryInfo dir in )
{
sw.WriteLine(notiz.ZeigeNotiz(i));
}
}
sw.Flush();
}
Jedoch komme ich bei dieser zeile nicht weiter
foreach (DirectoryInfo dir in //was kommt hier hin? )
Ich komme bei einen Notizbuch nicht weiter es eigentlich kompett fertig nur wenn ich das Programm neustarte sind alle Notizen weg.
Nun hab ich mir gedacht okay erstellen wir eine Textdatei und speichern die darin und lesen sie beim start wieder aus.
Leider funktioniert das irgend wie nicht die Textdatei ist bzw. bleibt nämlich leer.
Als Test hab ich schließlich die textdatei mal von Hand beschrieben, dass laden hat leider auch nicht so ganz funktioniert.
Es wurden texte nur geladen wenn ich eine neue Notiz hinzugefügt hab jedoch wurde die neue notiz nun nicht mehr eingetragen, zudem wurde nur eine zeile gelesen bzw. wenn ich noch eine neue notiz erstellt habe wurde die 2 zeile gelesen.
Ich stelle euch mal alles zur verfügung was ich bis jetzt habe ich hoffe irgend wer findet den fehler ;)
GUI KLASSE:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace persoenlichesNotizbuch_V0
{
public partial class NotizbuchForm : Form
{
private Notizbuch notiz;
private int zahl = -1;
private int zahlencounter = 0;
private bool pruefe = false;
public NotizbuchForm()
{
InitializeComponent();
notiz = new Notizbuch();
}
private void speichernButton_Click(object sender, EventArgs e)
{
if (pruefe == false)
{
if (notizTextBox.Text != "")
{
zahl++;
zahlencounter = zahl + 1;
notiz.SpeichereNotiz(zahlencounter.ToString() + ". " + notizTextBox.Text);
notizTextBox.Clear();
}
else
{
MessageBox.Show("Das Eingabefeld darf nicht leer sein!", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
if (notizTextBox.Text != null)
{
notiz.bearbeiten(notizTextBox.Text, notizListBox.SelectedIndex);
notizTextBox.Clear();
}
else
{
MessageBox.Show("Das Eingabefeld darf nicht leer sein!", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
//Speichern in Datei wenn neue Notiz hinzugefügt worden ist
string dateiname = "Notizen.txt";
FileStream datenstrom = new FileStream(dateiname, FileMode.Create, FileAccess.Write);
StreamWriter schreiber = new StreamWriter(datenstrom);
for (int i = 0; i ≤ zahl; i++)
{
schreiber.WriteLine(notiz.ZeigeNotiz(i));
}
schreiber.Close();
datenstrom.Close();
pruefe = false;
}
}
private void NotizbuchForm_Load(object sender, EventArgs e)
{
// Gespeicherte Notizen Laden
string dateiname = "Notizen.txt";
FileStream datenstrom = new FileStream(dateiname, FileMode.OpenOrCreate, FileAccess.Read);
StreamReader leser = new StreamReader(datenstrom);
while (leser.Peek() != -1)
{
notiz.SpeichereNotiz(leser.ReadLine());
}
leser.Close();
datenstrom.Close();
}
}
}
...
...
Weiter Klasse:
...
...
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace persoenlichesNotizbuch_V0
{
/**
* Die Klasse Notizbuch verwaltet beliebig lange Notizlisten.
* Die Notizen sind nummeriert, um referenziert werden zu können.
* In dieser Version starten die Notiznummern bei 0.
* Autor: Marcel Croonenbroeck
* Version: 03.01.2011
*/
public class Notizbuch
{
// Speicher für eine beliebige Anzahl an Notizen
private ArrayList notizen;
// Führt die Initialisierungen durch, die für ein Notizbuch notwendig sind
public Notizbuch()
{
notizen = new ArrayList();
}
// Speichert eine neue Notiz in diesem Notizbuch
public void SpeichereNotiz(string notiz)
{
notizen.Add(notiz);
}
// Zeigt die Notiz mit der Notiznummer <index> an
public string ZeigeNotiz(int index)
{
if ((index ≥ 0) && (index < AnzahlNotizen()))
{
return (string)notizen[index];
}
else
{
return "";
}
}
}
}
Danke erstmal für die antwort, jedoch komme ich einfach noch immer nicht weiter :)
Ich verstehe den Code leider nicht ganz mit get und set, zudem kommt ein error "Die Methode muss ein Rückgabetype besitzen"
Dann ist das das problem mit den Objekt, wie hänge ich den ein Objekt an die Combobox einträge an ich hab gegooglet aber es kam nur jedemenge anderes zeug.
Also ich klicke auf einen eintrag z.b. Rot dann wird das Event oben ausgeführt. Nun soll das Panel die farbe ändern.
Nun wie muss ich das nun in der Form bzw. in den oberen Event aufrufen bzw. welche Methode ich nun wo aufrufen muss. Und wie hänge ich jetzt genau ein obejekt an die Combobox einträge?
// Klasse wird aufgerufen wenn eintrag in Combobox geändert wurde
class Klassenname
{
public string Farbenname { get; set; }
public Color Farbe { get; set; }
public override ToString()
{
return Farbenname;
}
}
Das hört sich gut an aber wie genau funktioniert das?
Also zuzeit hab ich eine Combobox daneben ein Panel das noch unsichtbar ist bis ein eintrag ausgewählt wird. Nun wird es Sichtbar und soll die farbe bekommen.
Aber wie hänge ich ein Objekt an der Combobox? bzw. immoment verstehe ich das mit den Objekt noch nicht so ganz.
könntest du villeicht ein kleines Code beispiel posten mit ner kleinen erklärung wäre super nett.
Ich habe mir eine ComboBox genommen die mehrere farben enthält. Je nach auswahl soll das Panel gefärbt werden, da ich dies jedoch öfters brauche und ich den Code meiner Form nicht unnötig lang machen will wollte ich die ganze geschichte per Method bzw. Klasse machen.
public string farbwahl(string box)
{
switch (farbe)
{
case "Rot":
break;
case "Gelb":
break;
case "Grün":
break;
case "Blau":
break;
case "Orange":
break;
case "Pink":
break;
case "Schwarz":
break;
case "Random":
break;
}
Nun das Problem wie kann ich jetzt bestimmen wie sich mein Panel färben soll bzw. wie muss ich das übergeben.
Danke der link hat mich schonmal etwas weiter gebracht das problem ist nun er zeigt mir ein script an^^ ich will nur die zahl die auf der hp steht^^ mehr nit ;)
edit habs geschaft lag an den webspace anbieter der hat ein dummes Java script noch am laufen was er mit angezeigt hat. Aber nun gehts^^
Mhh ich komm einfach nicht weiter ich möchte einfach nur das der string auf der homepage in label übergeben wird und dies soll z.b. jede stunde gemacht werde ;(
Spätestens in der listbox hätte ja irgend wann der String kommen müssen jedoch kam nach einer weile nur der error mehr nicht.
In der html datei steht nur die zahl sonst nichts wenn ich die Homepage aufrufe wird mir die zahl auch angezeigt. Also die html Datei ist soweit korrekt.
Ich wollte von einer Homepage auf der eine Zahle steht diese abrufen und in einem Label ausgeben, doch leider funktioniert dies einfach nicht wie ich das will. Es gibt keine fehler meldung oder so. Ich habe mal in den label was eingetragen und sobald es ausgeführt wird, wird der Inhalt des Labels zwar gelöscht, jedoch wird nichts von der homepage übernommen. Ich hoffe es kann mir wer helfen.
MFG Marcel
Hier der Code:
System.Net.WebClient Client = new WebClient();
Stream strm = Client.OpenRead("http://test/index.html");
StreamReader sr = new StreamReader(strm);
string line;
do
{
line = sr.ReadLine();
label7.Text=line;
}
while (line != null);
strm.Close();
Ich habe folgendes problem ich möchte das mein Programm einmal stündlich Daten von einer Homepage oder Server abruft und diese an einem Label übergibt. Jedoch habe ich keine ahnung wie ich das bewerkställige da ich mich mit web anwendungen bis jetzt nicht wirklich befasst habe. Ich hoffe Ihr könnt mir weiterhelfen villeicht in form eines Tutorials oder Ideenansätzen oder ob es villeicht dafür eine Methode gibt usw;).
hab schon gegoogelt jedoch nix brauchbares gefunden ;(
Ja natürlich kein problem war nur schon wieder so sehr vertieft ;)
Also das war schließlich die lösung:
Es fehlte also überall das "On" bei OnKeyDown obwohl es auch ohne gehen müsste und folgende zeile fehlte bei mir:
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.panel1_OnKeyDown);
Hier der mein funktionierende Quelltext.
public Form1()
{
InitializeComponent();
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.panel1_OnKeyDown);
KeyPreview = true; // steht zwar nicht in dem anderem Thread drin aber ohne gehts nicht ;)
private void panel1_OnKeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Escape:
panel1.Visible = true;
e.Handled = true;
break;
}
}
Ich habe mich jetzt schon durch zig Toturials geschlagen und habe doch schon einiges hinbekommen, jedoch komme ich nun einfach nicht weiter und hoffe das ihr mir helfen könnt.
Folgendes Problem:
Ich will das auf ein Tastendruck z.b. wenn ich ESC drücke, dass dann mein panel unsichtbar bzw. sichtbar wird.
Ich habe auch schon einiges ausprobiert, folgender quelltext liefert mir kein fehler, jedoch passiert auf Tastendruck nichts.