قبل از خواندن این مقاله، خواندن قسمت های قبلی مجموعه را به شدت توصیه می کنم.
- آموزش برنامه نویسی ویندوز جهانی از طریق C++ مدرن
- آموزش برنامه نویسی ویندوز جهانی از طریق C++ مدرن (کنترل دکمه)
- آموزش برنامه نویسی ویندوز جهانی از طریق C++ مدرن (Stackpanel)
کادر را علامت بزنید
کنترل جعبه چک برای انتخاب یا عدم انتخاب موارد بر اساس انتخاب کاربر استفاده می شود
ex - با نصب نرم افزار ویژوال استودیو، کاربر می تواند جزء نرم افزاری را که باید نصب شود یا خیر انتخاب کند
![](http://pezhvak24.ir/dl/10kcor/cscd/article/learn-universal-windows-programming-via-modern-cpp-check-box/Images/UnSelectorSelect.jpg)
این کنترل دارای سه فرآیند انتخاب است و هر یک رویداد خاص خود را دارد.
- انتخاب شده - موارد انتخاب شده اند، مقدار به عنوان درست برمی گردد
- انتخاب نشده - موارد انتخاب نشده اند، مقدار به عنوان false برمی گردد
- نامشخص - موارد هم انتخاب شده و هم انتخاب نشده است، مقدار به عنوان حالت تهی برمی گردد.
1. Selected 2. Unselected 3. Indeterminate, Selected and Unselected handle ویژگی در ویژگی IsChecked و دسته ویژگی Indeterminate در ویژگی IsThreeState، اگر ویژگی IsChecked حاوی درست یا نادرست بودن باشد، IsThreeState به عنوان null تنظیم می شود هر ویژگی دارای رویداد خاص خود است
. رویدادهای کنترلکننده، بررسیشده، علامتنخورده و نامشخص، رویداد مانند رویداد کنترل دکمه اجرا شده است.
رویداد علامتگذاری شده فعال میشود، وقتی آیتم چک باکس انتخاب شد، رویداد علامتنشده فعال میشود، زمانی که مورد چک باکس انتخاب نشده باشد، اگر مورد انتخاب یا انتخاب نشده باشد، ویژگی IsChecked بهطور خودکار درست یا نادرست تنظیم میشود.
هنگامی که موارد در ThreeState (حالت انتخاب و لغو انتخاب) رویدادهای نامشخص فعال می شوند.
- CheckBox chkBox;
- chkBox.Checked(&ChkBoxCheckedClick);
- void App::ChkBoxCheckedClick(IInspectable const & sender, const RoutedEventArgs &args)
- {
- }
برنامه نمونه زیر در مورد نحوه ایجاد کنترل checkBox و کنترل کننده رویداد توضیح می دهد
- #include "pch.h"
- using namespace winrt;
- using namespace Windows::ApplicationModel;
- using namespace Windows::ApplicationModel::Activation;
- using namespace Windows::Foundation;
- using namespace Windows::UI;
- using namespace Windows::UI::Xaml;
- using namespace Windows::UI::Xaml::Controls;
- using namespace Windows::UI::Xaml::Controls::Primitives;
- using namespace Windows::UI::Xaml::Interop;
- using namespace Windows::UI::Xaml::Media;
- using namespace Windows::UI::Xaml::Navigation;
- using namespace Windows::UI::Popups;
- using namespace Windows::Storage;
- struct App:ApplicationT<App>
- {
- public:
- virtual ~App() = default;
- static IInspectable MakeString(hstring);
- static CheckBox CreateCheckBox(hstring,bool,bool);
- static bool CheckBoxStatus(IInspectable const& sender);
- static void OnLaunched(LaunchActivatedEventArgs const&);
- static void ChkBoxCheckedClick(IInspectable const & sender, const RoutedEventArgs &args);
- static void ChkBoxUnCheckedClick(IInspectable const & sender, const RoutedEventArgs &args);
- static void ChkBoxIndeterminateClick(IInspectable const & sender, const RoutedEventArgs &args);
- static hstring GetChkBoxName(IInspectable const& sender);
- };
- IInspectable App::MakeString(hstring captionText)
- {
- return PropertyValue::CreateString(captionText);
- }
- CheckBox App::CreateCheckBox(hstring captionText,bool threeState,bool isChecked)
- {
- CheckBox chkBox;
- chkBox.Content(MakeString(captionText));
- if (threeState)
- chkBox.IsThreeState(threeState);
- else
- chkBox.IsChecked(isChecked);
- chkBox.Checked(&ChkBoxCheckedClick);
- chkBox.Unchecked(&ChkBoxUnCheckedClick);
- chkBox.Indeterminate(&ChkBoxIndeterminateClick);
- return chkBox;
- }
- bool App::CheckBoxStatus(IInspectable const& sender)
- {
- CheckBox chkBox = sender.as<CheckBox>();
- IReference<bool> value = chkBox.IsChecked();
- auto isSeleted = value.Value();
- return isSeleted;
- }
- void App::ChkBoxUnCheckedClick(IInspectable const & sender, const RoutedEventArgs &args)
- {
- auto ChkStatus = CheckBoxStatus(sender);
- auto chkName = GetChkBoxName(sender);
- MessageDialog msgDlg(L"UnChecked State (false)", chkName);
- msgDlg.ShowAsync();
- }
- void App::ChkBoxIndeterminateClick(IInspectable const & sender, const RoutedEventArgs &args)
- {
- CheckBox chkBox = sender.as<CheckBox>();
- auto value = chkBox.IsThreeState();
- if(value)
- {
- auto chkName = GetChkBoxName(sender);
- MessageDialog msgDlg(L"Indeterminate State", chkName);
- msgDlg.ShowAsync();
- }
- }
- hstring App::GetChkBoxName(IInspectable const& sender)
- {
- CheckBox chkBox = sender.as<CheckBox>();
- IPropertyValue IValue = chkBox.Content().as<IPropertyValue>();
- return IValue.GetString();
- }
- void App::ChkBoxCheckedClick(IInspectable const & sender, const RoutedEventArgs &args)
- {
- auto ChkStatus = CheckBoxStatus(sender);
- auto chkName = GetChkBoxName(sender);
- MessageDialog msgDlg(L"Checked State (True)", chkName);
- msgDlg.ShowAsync();
- }
- void App::OnLaunched(LaunchActivatedEventArgs const&)
- {
- auto chkBox1 = CreateCheckBox(L"C++",false,false);
- auto chkBox2 = CreateCheckBox(L"C#", true,false);
- auto chkBox3 = CreateCheckBox(L"VB", false, true);
- Thickness margin;
- margin.Bottom = 0;
- margin.Left = 20;
- margin.Right = 0;
- margin.Top = 5;
- StackPanel sPanel;
- sPanel.Margin(margin);
- sPanel.Children().Append(chkBox1);
- sPanel.Children().Append(chkBox2);
- sPanel.Children().Append(chkBox3);
- Window window = Window::Current();
- window.Content(sPanel);
- window.Activate();
- }
- int __stdcall wWinMain(HINSTANCE,HINSTANCE,PWSTR,int)
- {
- Application::Start([](auto &&) {make<App>(); });
- return 0;
- }
خروجی رویداد CheckedClick
![](http://pezhvak24.ir/dl/10kcor/cscd/article/learn-universal-windows-programming-via-modern-cpp-check-box/Images/checked.jpg)
![](http://pezhvak24.ir/dl/10kcor/cscd/article/learn-universal-windows-programming-via-modern-cpp-check-box/Images/unchecked.jpg)