Jestem dość początkujący, jeśli chodzi o C# (albo raczej ogólnie w programowaniu).
W ramach ćwiczeń próbuję sobie napisać kalkulator. Mam już normalne, działające guziczki odpowiadające za liczby i konkretne działania. Dalej chcę rozbudować parę rzeczy.
Obecnie natknąłem się na 4 problemy:
- Jak zaczytać wciśnięcie klawisza? W sensie, zablokowałem textboxa, żeby użytkownik nie wklepał mi tam żadnych liter ani nic takiego. Chciałbym, żeby jednak aplikacja wykrywała wciśnięcia cyfr i wrzucała je do textboxa (bez konieczności zaznaczania go).
Próbowałem googlować, ale wszędzie jest jak zaczytywać wciśnięte klawisze gdy textbox jest zaznaczony do pisania.
Na razie mam coś takiego (jeśli chodzi o te OR albo AND w pierwszym IF, to różne kombinacje próbowałem, też dla jednego, konkretnego klawisza):
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode > Keys.D0 && e.KeyCode < Keys.D9 || e.KeyCode == Keys.NumPad0 && e.KeyCode == Keys.NumPad9)
{
if (e.KeyCode == Keys.D1 || e.KeyCode == Keys.NumPad1)
{
if (textBox1.Text == "0")
{
textBox1.Text = "";
}
textBox1.Text = (textBox1.Text + "1");
}
}
}
Niestety program w ogóle nie reaguje na klikanie czegokolwiek.
- Operuję na float'ach, więc użytkownik może wpisywać przecinki. Problem polega na tym, że może ich wpisać ile chce, a to już nie jest pożądane.
Chciałem dodać IF'a typu "jeśli jest przecinek, to nie rób nic". I tutaj dwa pytania - da się znaleźć konkretny znak w stringu? Jedyne co wyczytałem do tej pory, to możliwość znalezienia indexu tego znaku w stringu. Wtedy ten IF brzmiałby jakoś "jeśli zmienna.indeks.przecinka > 0, nie rób nic". Zadziała to tak? I drugie pytanie - jak zrobić, żeby IF nie wykonywał nic? Po prostu pusty?
-
Chciałem zrobić menu kontekstowe. Wiecie, u góry, zaraz pod paskiem programu. Typu "plik, edycja" etc., ale niezbyt ogarniam jak to ma wyglądać. Próbowałem dodać MenuContextStrip, ale po uruchomieniu nigdzie go nie ma. Może coś pomijam?
-
Dodałem też checkox pozwalający zapisywać nasze działania do pliku. Chciałem też dodać możliwość edycji lokacji/nazwy pliku (z poziomu wspomnianego menu kontekstowego, ale tutaj to nie ma znaczenia).
Na razie mam:
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@”D:\textfile.txt”, true))
I to działa fajnie.
Niestety nie wiem jak zrobić, żeby ścieżka do pliku była wywoływana z innego miejsca, które może edytować użytkownik. Próbowałem:
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@variable, true))
variable = “\”D:\\textfile.txt\””
Ale wtedy wywala mi błąd (nieobsługiwany wyjątek).
Jakieś pomysły?
Z góry dzięki za pomoc!
dodanie znaczników <code class="csharp"> - furious programming