Karty w windows forms

0

Witam, piszę (może za dużo powiedziane). Staram się pisać program Windows Forms w C# i chciałbym użyć czegoś w rodzaju kart w przeglądarce. Tzn żeby zawsze były dostępne. W drugiej karcie chcę przechowywać wyniki działań z pierwszej karty. Jakiego elementu z przybornika powinienem użyć? O ile jest coś takiego. Ewentualnie proszę o jakąś alternatywę.

Pewnie będę miał jeszcze jakieś pytania.
Z góry dzięki za pomoc.

0

Zainteresuj się TabControl. Tak na szybkiego:

Są też filmy:

Pełno tego w goglach generalnie.

0

Dzięki, rzeczywiście się pospieszyłem z tematem. Mam kolejny problem, który wcześniej próbowałem rozwiązać przez google.

Otóż chcę dodać opcję drukowania. Tylko chciałbym żeby wyświetlało się okno dialogowe PrintDialog. I oczywiście to nie problem. Problemem jest to co dzieje się później, Po wybraniu drukarki i naciśnięciu Drukuj nic się nie dzieje. Ktoś mógłby mnie naprowadzić co powinno znaleźć się w kodzie? Zapewne musi się tam też znaleźć, nazwijmy to, wzorzec wydruku.

Aha, i mam problem ze zmianą nazwy podmenu elementu menustrip. Menu główne zmieniłem:

        private void angielskiToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form.ActiveForm.Text = "Payroll";
            menuStrip1.Items[0].Text = "File";
            menuStrip1.Items[1].Text = "Edit";
            menuStrip1.Items[2].Text = "Option";
            menuStrip1.Items[3].Text = "Help";
        }

Nie wiem jak się dostać do elementu np drukuj, który znajduje się po naciśnięciu "File"

0
  1. https://msdn.microsoft.com/en-us/library/xdt36c58%28v=vs.110%29.aspx

  2. dlaczego wypełniasz menustripa w kodzie? jest jakiś konkretny powód?

0

Dzięki.. Tak mam powód. Chcę zrobić zmianę języka. Wiesz może jak się dostać do submenu z poziomu kodu?

0

Przepraszam za post pod postem. Mogę liczyć na pomoc z przypisaniem konkretnego znaku MaskedTextBoxa?

Próbowałem już m.in. coś w stylu:

MaskedTextBox1.Text[0].ToString() = "0";

Wywala błąd, że po lewej musi być zmienna.

0

A co w ogóle chcesz zrobić?
Tak poza tym właściwość Text jest stringiem więc nie musisz dodawać ToString()
Może chodziło Ci o coś takiego: maskedTextBox1.Text = "0" - ale to nie tak się robi, jeśli dobrze się domyślam co chcesz zrobić.

0

Chcę przypisać dowolny znak konkretnemu znakowi w moim maskedTextBox. I wydaje mi się, że to jest char a nie string. Jestem laikiem, więc mogę się mylić.. Prawdę mówiąc to załątwiłem to już w inny sposób :) Ale tutaj coś z czym sobie na pewno nie poradzę :) Może na początek kod:

            if (maskedTextBox1.Text.Contains(" "))
            {
                MessageBox.Show("Wprowadziłeś złą datę w polu: Rachunek z dnia\n\nPoprawny format to dd/mm/rrr", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            string dzien;
            dzien = maskedTextBox1.Text[0].ToString();
            dzien += maskedTextBox1.Text[1].ToString();

            string miesiac;
            miesiac = maskedTextBox1.Text[3].ToString();
            miesiac += maskedTextBox1.Text[4].ToString(); 

            string rok;
            rok = maskedTextBox1.Text[6].ToString();
            rok += maskedTextBox1.Text[7].ToString();
            rok += maskedTextBox1.Text[8].ToString();
            rok += maskedTextBox1.Text[9].ToString();

Mój MaskedTextBox1 wygląda następująco __/__/____ gdzie _ to dd/mm/rrrr. Jak wpiszę, np 12/__/____ (2 znaki z miesiąca i cały rok zostawię pusty) to pięknie wchodzi do if'a podanego wyżej. Wywala msgboxa i wychodzi z metody. Co jest zrozumiałe, bo po pierwszym niewypełnionym miejscu jest "/" i to miejsce zamienia się w spację.

Ale już kiedy wpiszę 12/12/____ (tylko rok pusty) to nie wchodzi do if'a, tak jakby automatycznie skracał ciąg znaków... OK, to też nie jest dziwne. Pomyślałem, że skoro skraca to do ifa dodam warunek

if ((maskedTextBox1.Text.Contains(" ")) || (maskedTextBox1.TextLenght < 10)) - jeśli się pomyliłem z nawiasami to nie zwracajcie uwagi, w Visual Studio było ok...

Przeleciałem kod krokowo i na dole jest napisane, że string wygląda,np tak "11/11/"... Ale tutaj najdziwniejsze.. Poniżej widnieje informacja MaskedTextBox1.TextLenght = 10

I zgłupiałem.

Oczywiście jeśli wpiszę 12/12/___1 to wszystko działa ponieważ po niewpisanych miejscach jest znak. W tym wypadku "1".

0

A nie lepiej po prostu użyć DateTimePicker'a ?

0
cSharpKazik napisał(a):

A nie lepiej po prostu użyć DateTimePicker'a ?

Pewnie lepiej :) Ale już zacząłem robić na maskedtextboxach i też nie jest źle.

Kaziku jesteś w stanie odpowiedzieć mi czemu mimo ciągu "11/11/", TextLenght = 10 ?

1

Dlatego 10, bo masz jeszcze 4 kreski: ____ na rok. TextLength zawsze Ci zwróci w tym przypadku to, co jest w MaskEdicie - nawet te kreski, które wskazują na miejsce do wpisania.

0
Juhas napisał(a):

Dlatego 10, bo masz jeszcze 4 kreski: ____ na rok. TextLength zawsze Ci zwróci w tym przypadku to, co jest w MaskEdicie - nawet te kreski, które wskazują na miejsce do wpisania.

No tak, ale czemu po wprowadzeniu dnia i miesiąca (zostawiając rok pusty) string wygląda "11/11/" zamiast "11/11/____"

Ponadto jeżeli zrobię if'a, który sprawdza czy maskedtextbox1.text contain "_" to nawet do niego nie wchodzi...

0

Dla potomnych. Udało mi się zażegnać problem.


 if (maskedTextBox1.MaskFull == false)
            {
                MessageBox.Show(...);
                return;
            }

Załatwiło sprawę.

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