Wyświetlanie danych textBox

0

Cześć,

potrzebuję pomocy odnośnie wyświetlenia wyniku pomiaru, napisałem prosty program wyświetlający wyniki pomiaru z multimetru. Chciałbym, aby po połączeniu, w textBoxie wyświetlał się tylko jeden, ostatni pomiar i zajmował jego całą powierzchnię(auto dopasowanie do rozmiaru okna), a wszystkie pomiary zapisywały się do pliku do momentu wyłączenia programu. Wiem jak zapisać co znajduje się a textBoxie, ale tego nie umiem.

0

Od razu nasuwa się wzorzec obserwator - polecam filmy tego gościa: https://www.youtube.com/watch?v=_BpmfnqjgzQ
Jeśli chcesz konkretów to pokaż trochę kodu. Inaczej to wróżenie z fusów albo pisanie od zera.

0

Wyświetlanie mam zrobione w najprostszy możliwy sposób. Czas systemowy był dodany tylko na próbę. W wersji finalnej nie będzie używany.

    private void ShowData(object sender, EventArgs e)
        {
            DateTime timeNow = DateTime.Now;

            textBox1.Text += timeNow.ToLongTimeString() +  this.finishValue + "\r\n";
        }

1

Uzyj po prostu operatora = zamiast +=

textbox.text = this.finishValue;
0

Okej działa, a jak zrobić dopasowanie rozmiaru czcionki do okienka, w sensie, gdy powiększę okno to zmieni się rozmiar czcionki na odpowiedni.

1

Musisz użyć odpowiedniego zdarzenia związanego ze zmianą rozmiaru okna, na przykład SizeChanged. W metodzie wywoływanej przez to zdarzenie manipulujesz wielkością czcionki bazując na rozmiarze okna. Na przykład:

private void AdjustFont()
{
     FontFamily bufferFont = textBox1.Font.FontFamily;
     float newSize = (float)(this.Height - 40) / 2;
     textBox1.Font = new Font(bufferFont, newSize);
}
0

Dzięki bardzo za pomoc, działa tak jak chciałem :)

Mam jeszcze tylko pytanie do zapisu, miałem zrobione tak, że po naciśnięciu przycisku zapisze mi wszystko co jest w textBoxie:

private void zapisz_Click(object sender, EventArgs e)
        {
            if(saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                File.WriteAllText(saveFileDialog1.FileName, textBox1.Text);
            }
        }

Da się to jakoś rozwiązać, aby zapis trwał automatycznie do końca pomiaru ? Oczywiście po wcześniejszym stworzeniu pliku.

1

Możesz użyć zdarzenia TextChanged dla twojego textBoxa, w którym będziesz dopisywał linię do swojego pliku. Zamiast File.WriteAllText użyj File.AppendAllText.
Tutaj masz więcej info: https://msdn.microsoft.com/en-us/library/system.io.file(v=vs.110).aspx

0

Tylko jak odczytać potem miejsce tego pliku, który zostanie stworzony ?

0

Ścieżkę do pliku nadajesz samemu przecież - w pierwszym parametrze File.AppendAllText.

0

A jest taka możliwość, żeby nie wpisywać na sztywno ścieżki, tylko pobrać tą, którą przed chwilą stworzyłem ? Wszystkie przykłady jakie znalazłem to te, z podaniem własnej ścieżki.

1

Pewnie, że tak. Po tym jak wskażesz plik używając SaveFileDialog, masz dostęp do jego ścieżki poprzez właściwość FileName. To jest string więc możesz sobie go przechwycić w twojej metodzie zapisz_Click.
Microsoft udostępnia całkiem niezłą dokumentację, takie rzeczy jest łatwo znaleźć. Albo w samym Visual Studio sprawdzić jakie właściwości czy metody ma dana klasa (chociażby zobaczyć co podpowiada intellisense). To taka moja rada od newbie dla newbie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1