using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace Toxtasinova
{
public partial class MainForm : Form
{
private System.Windows.Forms.CheckBox boldCheckBox;
private System.Windows.Forms.CheckBox italicCheckBox;
private System.Windows.Forms.Label outputLabel;
private System.ComponentModel.IContainer components;
public MainForm()
{
InitializeComponent();
Application.Run( new MainForm() );
}
void BoldCheckBoxCheckedChanged(object sender, EventArgs e)
{
outputLabel.Font =new Font( outputLabel.Font.Name,outputLabel.Font.Size,outputLabel.Font.Style ^ FontStyle.Bold );
}
void ItalicCheckBoxCheckedChanged(object sender, EventArgs e)
{
outputLabel.Font =new Font( outputLabel.Font.Name,outputLabel.Font.Size,outputLabel.Font.Style ^ FontStyle.Italic );
}
}
}
Komponentlarni yaratgandan so'ng, ularning voqea ishlovchilarini aniqlaymiz. BoldCheckBox-ni ikki marta bosish bo'sh CheckedChanged voqea ishlovchilarini yaratadi va ro'yxatdan o'tkazadi. Voqealar ishlovchisiga qo'shilgan kodni tushunish uchun avval outputLabel'S Font xususiyatini muhokama qilamiz.
Shriftni o'zgartirish uchun Font xossasini Font ob'ektiga o'rnatish kerak. Biz foydalanadigan Shrift konstruktori shrift nomini, o'lchamini va uslubini oladi. Birinchi ikkita argument outputLabel's Font ob'ektidan foydalanadi, ya'ni outputLabel.Font.Name va outputLabel.Font.Size. Ushbu uslub FontStyle sanashning a'zosi bo'lib, unda Regular, Bold, Italic, Strikeout va Underline shrift uslublari mavjud. (Strikeout uslubi matnni chiziq orqali, pastki chiziq chizig'idagi matnni aks ettiradi.) Shrift ob'ekti yaratilganida Font ob'ekti Style xususiyati o'rnatiladi - Style xossasining o'zi faqat o'qish uchun mo'ljallangan.
Uslublarni bitli operatorlar yoki bitlarda manipulyatsiya bajaradigan operatorlar yordamida birlashtirish mumkin. 1-bobdan eslang, barcha ma'lumotlar kompyuterda 0 va 1 ning ketma-ketligi sifatida namoyish etiladi. Har bir 0 yoki 1 bit deb nomlanadi. Ushbu bit qiymatlari yordamida harakatlar amalga oshiriladi va ma'lumotlar o'zgartiriladi. Ushbu dasturda biz shrift uslubini o'rnatishimiz kerak, shunda matn dastlab qalin bo'lmagan bo'lsa va aksincha. E'tibor bering, 60-satrda biz buni amalga oshirish uchun bitli XOR operatoridan (^) foydalanamiz. Ushbu operatorni ikkita bitga tatbiq etish quyidagilarni amalga oshiradi: Agar mos bitlardan bittasi 1 ga teng bo'lsa, natijani 1 ga o'rnating. 60-qatorda bo'lgani kabi ^ operatoridan foydalanib biz qalin harflar uchun bit qiymatlarini bir xil qilib o'rnatamiz. yo'l. O'ng tomondagi operand (FontStyle.Bold) har doim qalin qilib bit qiymatlariga ega. Olingan uslub qalin bo'lishi uchun chapdagi operand, keyin (outputLabel.Font.Style) qalin bo'lmasligi kerak. (XOR uchun esda tuting, agar bitta qiymat 1 ga o'rnatilgan bo'lsa, ikkinchisi 0 ga teng bo'lishi kerak, yoki natija 1 bo'lmaydi.) Agar outputLable.Font.Style qalin bo'lsa, natijada olingan uslub qalin bo'lmaydi. Ushbu operator shuningdek, uslublarni birlashtirishga imkon beradi. Masalan, agar matn dastlab italyancha bo'lsa
harflar bilan yozilgan bo'lsa, endi shunchaki qalin emas, balki kursiv va qalin bo'ladi.
Mavjud uslubni aniq sinovdan o'tkazib, uni kerakli narsaga qarab o'zgartirishimiz mumkin edi. Masalan, boldCheckBox_CheckChanged usulida biz odatiy uslubni sinab ko'rgan bo'lar edik, uni qalin qilib, qalin uslub uchun sinab ko'rdik, odatiy holga keltirdik, kursiv uslubi uchun, qalin kursiv yoki italik qalin uslubi bilan uni kursiv qilib qo'ydik. . Biroq, bu usulning kamchiliklari bor - har bir yangi uslub uchun biz kombinatsiyalar sonini ikki baravar oshiramiz. Belgilangan katakchani belgilash uchun biz sakkizta uslubni sinab ko'rishimiz kerak. Stroekut uchun katakchani qo'shish uchun har bir voqea ishlovchisida 16 ta sinov mavjud edi. Bitsel XOR operatoridan foydalanib, biz o'zimizni ushbu muammolardan qutqaramiz. Har bir yangi uslubga voqea ishlovchilarida faqat bitta gap kerak. Bunga qo'shimcha ravishda, uslublar osongina olib tashlanishi mumkin, ularning ishlov beruvchisi olib tashlanadi. Agar biz har bir shart uchun sinovdan o'tgan bo'lsak, ishlov beruvchini va boshqa ishlovchilardagi barcha keraksiz sinov sharoitlarini olib tashlashimiz kerak edi.
Do'stlaringiz bilan baham: |