Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Zdziwiony

[C#] Jak sprawdzić, czy zaznaczony jest CheckBox

Rekomendowane odpowiedzi

Witam. Jako, że zaczynam przygodę z C# mam już pierwszy problem :E

Jak sprawdzić, czy CheckBox jest zaznaczony?

 

Mam taki kod:

namespace Test_Csz_
{
   /// <summary>
   /// Logika interakcji dla klasy MainWindow.xaml
   /// </summary>
   public partial class MainWindow : Window
   {
       public MainWindow()
       {
           InitializeComponent();
       }

       private void Button_Click(object sender, RoutedEventArgs e)
       {
           MessageBox.Show("elo"); 
         // ja chcę wykonać to po kliknięciu przycisku.... 
        // w C++ zapisałbym to tak  mniej więcej:
         if(CheckBox == _Checked}
           {
            //no i kod tutaj...., ale to nie działa 
           }
       }

       private void CheckBox_Checked(object sender, RoutedEventArgs e)
       {
           MessageBox.Show("elo");  //hmm... to się wykona po zaznaczeniu od razu...
       }
   }
}

 

Wiem, że źle sprawdzam... więc jak zrobić to poprawnie ?

 

EDIT: Ewentualnie mam taki pomysł, że utworze sobie zmienną i tak sprawdzę:

    /// <summary>
   /// Logika interakcji dla klasy MainWindow.xaml
   /// </summary>
   public partial class MainWindow : Window
   {
       public MainWindow()
       {
           InitializeComponent();
       }
       int czyzaznaczony = 0;
       private void Button_Click(object sender, RoutedEventArgs e)
       {
           MessageBox.Show("elo");
           if(czyzaznaczony == 1)
           {
               MessageBox.Show("elo");
           }

       }

       private void CheckBox_Checked(object sender, RoutedEventArgs e)
       {

           czyzaznaczony = 1;
       }
   }
}

 

To działa... ale czy powinienem tak robić?

EDIT: Dobra nie działa..., bo po odznaczeniu nie zeruje zmiennej :E

 

Proszę o pomoc ;)

 

 

EDIT: Ehh.. już sam nie wiem... zrobiłem coś takiego:

    public partial class MainWindow : Window
   {
       public MainWindow()
       {
           InitializeComponent();
       }
       private void Button_Click(object sender, RoutedEventArgs e)
       {
           if (checkbox.Checked) //jesli Checkbox.Checked jest true
           {

           }
       }

       private void Temp_Check(object sender, RoutedEventArgs e)
       {

       }







   }
}

Wywala:

Błąd	1	Zdarzenie "System.Windows.Controls.Primitives.ToggleButton.Checked" może wystąpić tylko po lewej stronie symboli += lub -=.	MainWindow.xaml.cs	31	22

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

checkbox jest obiektem, obiekty maja właściwości takie jak metody czy zmienne które opisują te obiekty, dostep do tych wlasciwosci otrzymuje sie poprzez postawienie kropki po nazwie obiektu np

 

checkbox.checked

 

odnosi sie do zmiennej typu boolean opisującej to czy checkbox jest czekniety, operuje sie na tym jak na zwyklej zmiennej, czyli

 

Jesli chcesz sprawdzic czy jest czekniety:

 

if(checkbox.isChecked == true)

{

\\something something dark side

}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

if(CheckBox == _Checked}

 

nie wiem czy ten kawałek napisałeś z palca czy skopiowałeś z programu ale... co to jest _Checked? i czemu warunek w ifie kończysz nawiasem klamrowym? I dlaczego przyrównujesz klasę, a nie obiekt klasy?

A wracając do tematu, rozumiem, że piszesz w WPF. Przed chwilą testowałem i takie coś u mnie działa

        private void Button_Click(object sender, RoutedEventArgs e)
       {
           if (chb1.IsChecked==true)
               Trace.WriteLine("Checked");
           else
               Trace.WriteLine("NOT Checked");
       }

 

CheckBox.IsChedked musisz przyrównać do true, poniewaz jest to typ nullable, czyli bool? Zwykły bool może przyjmować wartosci true i false. A bool? przyjmuje true, false i null. W wypadku takich typów trzeba to przyrównywać.

 

if (checkbox.Checked)

to nie ma działać. Mam wrażenie, ze o jedną lekcje za mało w kursie c# było. Jak sobie zobaczysz, to Checked to nie jest property, tylko event, czyli po polsku zdarzenie (jak z resztą jest napisane w błędzie). Do zdarzenia podpinasz delegate który jest wywoływany w momencie, gdy kontrolkago wywoła. W tym wypadku jeśli pod to zdarzenie podpiąłbyś metode, to wykonałaby się ona gdy zostanie zaznaczony CheckBox. Natomiast w WPFie jest property IsChecked i to właśnie Cie interesuje.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dzięki za odpowiedź :)

Teraz wywala:

Błąd	1	Element "System.Windows.Controls.CheckBox" nie zawiera definicji "isChecked", a nie odnaleziono metody rozszerzającej "isChecked", która przyjmuje pierwszy argument typu "System.Windows.Controls.CheckBox" (czy nie brakuje dyrektywy using lub odwołania do zestawu?).MainWindow.xaml.cs	31	21

 

Jakiego usinga dorzucić ?

 

if(CheckBox == _Checked}

 

nie wiem czy ten kawałek napisałeś z palca czy skopiowałeś z programu ale... co to jest _Checked? i czemu warunek w ifie kończysz nawiasem klamrowym? Jeśli to byki przy przepisywaniu to ok.

A wracając do tematu, rozumiem, że piszesz w WPF. Przed chwilą testowałem i takie coś u mnie działa

        private void Button_Click(object sender, RoutedEventArgs e)
       {
           if (chb1.IsChecked==true)
               Trace.WriteLine("Checked");
           else
               Trace.WriteLine("NOT Checked");
       }

 

CheckBox.IsChedked musisz przyrównać do true, poniewaz jest to typ nullable, czyli bool? Zwykły bool może przyjmować wartosci true i false. A bool? przyjmuje true, false i null. W wypadku takich typów trzeba to przyrównywać.

 

Sory mały byczek się wkradł ^^

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dzięki za odpowiedź :)

Teraz wywala:

Błąd	1	Element "System.Windows.Controls.CheckBox" nie zawiera definicji "isChecked", a nie odnaleziono metody rozszerzającej "isChecked", która przyjmuje pierwszy argument typu "System.Windows.Controls.CheckBox" (czy nie brakuje dyrektywy using lub odwołania do zestawu?).MainWindow.xaml.cs	31	21

 

Jakiego usinga dorzucić ?

 

 

 

Sory mały byczek się wkradł ^^

Niepamietam dokladnie jak szla nazwa tej wlasciwosci bo z roboty pisze i nie moge sprawdzic...

 

Jesli uzywasz visual studio, napisz w programie nazwe obietku (czyli checkbox), postaw kropke i powinno ci sie pojawic rozwijane menu z mozliwymi wlasciwosciami, poszukaj tam czegos w stylu checked.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...