Kilka pytań dotyczących vb.net

Witam. Jestem początkującym użytkownikiem Micosoft Visual studio 2010 Express. Piszę pewien program, i mam kilka wątpliwości co do rozwiązania kilku moich problemów:

  1. Jak zabezpieczyć Textbox’a, by można w nim wpisywac tylko liczby (np. od 10 do 30)?

  2. Jak “grupować” radiobuttony tak, by w np. 2 kategoriach móc wybrać po jednej opcji?

  3. Jak utworzyć zależność wybranej opcji od wykonywania obliczeń (Jeśli np. wybiorę opcję 1, to do jakiegoś wyniku dodaję 100, a jak wybiorę opcję 2, to do wyniku dodaje 50)?

z góry dziękuję za pomoc i pozdrawiam

  1. Możesz np. obsłużyć zdarzenia KeyDown/KeyPress, wpuszczać tylko cyfry, a w TextChanged odrzucać wartości spoza zakresu.

Chociaż ja użyłbymkontrolki NumericUpDown zamiast TextBoxa do wprowadzania liczb.

  1. Wsadź je do GroupBoxa.

  2. Przemyśl to pytanie i zadaj je jeszcze raz, w sposób zrozumiały. Na razie zgaduję, że chodzi Ci o sprawdzenie czy jakiś RadioButton jest zaznaczony, ale nie jestem pewien, czy o to Ci chodzi.

Po pierwsze … Mówimy o zwykłej aplikacji okienkowej?

  1. Najłatwiej byłoby użyć zamiast kontrolki TextBox kontrolki NumericUpDown i ustawić właściwości Minimum i Maximum na 10 i 30. Jeśli jednak konieczne musi to być TextBox to ja bym zrobił to tak. Tworzysz nową klasę np. MyTextBox, która będzie dziedziczyć po klasie System.Windows.Forms.TextBox. W tej klasie przeciążasz metodę OnTextChanged i/lub OnKeyPress (być może wystarczy jedna z nich, sam sprawdzisz). I do tych metod/tej metody wstawiasz kod, który sprawdzałby odpowiednie warunki. Następnie na formie będziesz umieszczał nie tą standardową kontrolkę TextBox, a tą swoją nowoutworzoną kontrolkę.

  2. Można, np. umieścić te kontrolki RadioButton w kontrolce Panel. Czyli po dwa różne Radiobutton-y w dwóch różnych Panel-ach.

  3. Jeśli przez wybiorę masz na myśli np. wartości umieszczone na kontrolce ComboBox to możesz obsłużyć zdarzenie SelectedIndexChanged tej kontrolki. W tym zdarzeniu umieścisz kod, który wykona to dodawanie określonej liczby do jakiegoś tam wyniku w zależności od wskazanej wartości.

  1. dzięki za podrzucenie pomysłów. Po prostu nie wiedziałem, że nie musi być to textbox.

  2. Pytanie troszkę niezrozumiałe, spróbuję wyjsąnić:

chcę zrobić program, który służy do wyceny produktu.

Cena tego produktu będzie zależna od wybranych opcji w kilku kategoriach.

Każdej opcji odpowiada inna wartość.

Tzn.

kategoria1

opcja1 (50)

opcja2(60)

kategoria2

opcja3 (40)

opcja4 (50)

załóżmy, że zaznaczyłem opcję 2 i 3

więc

cena = opcja2 + opcja 3

Nie wiem, czy to zrozumiałe, ale inaczej nie umiem :slight_smile:

PS. Tak, to zwykła okienkowa aplikacja.

no to najlepiej to będzie zrobić tak

  1. Tworzysz sobie w bazie danych tabelę o takich kolumach: ID, Kategoria, Opcja, Wartość

  2. Na formie umieszczasz 2x Label i podpisujesz je Kategoria1 i Kategoria2 (czy jak tam będziesz chciał) oraz 2x ComboBox

  3. Każdy z tych ComboBox-ów wypełniasz na podstawie danych w utworzonej wcześniej tabeli, przy czym dla każdego ComboBox-a będziesz musiał te dane odpowiednio przefiltrować po kategori (możesz w tym celu skorzystać z kontrolki BindingSource)

  4. W zdarzeniach SelectedIndexChanged ComboBox-ów przechwytujesz informację o tym, czy użytkownik wybrał nową opcję i na podstawie tego modyfikujesz wysokość ceny.

I tyle …

Rozwiązałem to inaczej.

Zrobiłem buttona o Nazwie “Oblicz”, i dodałem If-y

If opcja1.Checked = True Then

cena = cena + x

End If

If opcja2.Checked = True Then

cena = cena + y

End If

gdzie cena to wcześniej zadeklarowana zmienna, a x i y to jakieś stałe.

Ale pojawił się kolejny problem.

Chcę dodać ikonkę do programu, lecz gdy podaję ścieżkę do pliku Icon.ico, pojawia się błąd: “Argument ‘Picture’ must be a picture that can be used as Icon.” Co jest nie tak?

Prawdopodobnie nie jest to prawidłowy plik ico. W jakim programie go zapisałeś?

w Paincie :slight_smile: nie jest to najlepsze rozwiązanie, musze ściągnąć gimp-a.

W painice nie da się zrobić ICO.

Chyba nie myślisz że jak zmienisz rozszerzenie pliku DOC na JPG to plik ten stanie się obrazkiem :smiley:

no nie, ale w eksploratorze windowsa było napisane wyraźnie: “Ikona” :stuck_out_tongue: