Главная страница

Борис Пахомов Санкт Петербург бхв петербург 2013 удк 004. 4 Ббк 32. 973. 26018. 2 П


Скачать 17.38 Mb.
НазваниеБорис Пахомов Санкт Петербург бхв петербург 2013 удк 004. 4 Ббк 32. 973. 26018. 2 П
АнкорMS Visual C.pdf
Дата04.08.2018
Размер17.38 Mb.
Формат файлаpdf
Имя файлаMS Visual C.pdf
ТипДокументы
#22453
страница26 из 37
1   ...   22   23   24   25   26   27   28   29   ...   37

1
.6
1
. Работа стеле фо нным сп ра во чни ко м.
Ч
ас ть Рис 1

1
.6
2
. Работа стеле фо нным сп ра во чни ко м.
Ч
ас ть
2
Глава
11. Компоненты, создающие интерфейс между пользователем и
приложением
327 Рис 11.63. Работа с телефонным справочником. Часть Листинг 11.11

#pragma once namespace Tel_Sprav2011 { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; using namespace System::IO;
//using namespace System::IO::File; using namespace System::Text;
//using namespace std;
///
/// Summary for Form1
///
public ref class Form1 : public System::Windows::Forms::Form
{ public:
Form1(void)
{
InitializeComponent();

328 Часть II. Приложения Windows Form
//
//TODO: Add the constructor code here
//
} protected:
///
/// Clean up any resources being used.
///

Form1()
{ if (components)
{ delete components;
}
} private: System::Windows::Forms::Label^ label1; protected: private: System::Windows::Forms::ComboBox^ comboBox1; private: System::Windows::Forms::Label^ label2; private: System::Windows::Forms::Label^ label3; private: System::Windows::Forms::Button^ button1; private: System::Windows::Forms::CheckedListBox^ checkedListBox1; private: System::Windows::Forms::TextBox^ textBox1; private: System::Windows::Forms::TextBox^ textBox2; private: System::Windows::Forms::Button^ button2; private: System::Windows::Forms::Button^ button3; private: System::Windows::Forms::Label^ label4; private: System::Windows::Forms::Button^ button4; private:
///
/// Required designer variable. int fix;
StreamWriter ^sw;
///

System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
///
/// Required method for Designer support — do not modify
/// the contents of this method with the code editor.
///
void InitializeComponent(void)
{ this->label1 = (gcnew System::Windows::Forms::Label());
Глава
11. Компоненты, создающие интерфейс между пользователем и
приложением
329
this->comboBox1 = (gcnew System::Windows::Forms::ComboBox()); this->label2 = (gcnew System::Windows::Forms::Label()); this->label3 = (gcnew System::Windows::Forms::Label()); this->button1 = (gcnew System::Windows::Forms::Button()); this->checkedListBox1 = (gcnew System::Windows::
Forms::CheckedListBox()); this->textBox1 = (gcnew System::Windows::Forms::TextBox()); this->textBox2 = (gcnew System::Windows::Forms::TextBox()); this->button2 = (gcnew System::Windows::Forms::Button()); this->button3 = (gcnew System::Windows::Forms::Button()); this->label4 = (gcnew System::Windows::Forms::Label()); this->button4 = (gcnew System::Windows::Forms::Button()); this->SuspendLayout();
//
// label1
// this->label1->AutoSize = true; this->label1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans
Serif", 7.8F, System::Drawing::FontStyle::Bold,
System::Drawing::GraphicsUnit::Point, static_cast(204))); this->label1->Location = System::Drawing::Point(15, 13); this->label1->Name = L"label1"; this->label1->Size = System::Drawing::Size(378, 17); this->label1->TabIndex = 0; this->label1->Text = Десять самых нужных телефонов (горячий ящик
//
// comboBox1
// this->comboBox1->FormattingEnabled = true; this->comboBox1->Location = System::Drawing::Point(44, 33); this->comboBox1->Name = L"comboBox1"; this->comboBox1->Size = System::Drawing::Size(289, 24); this->comboBox1->TabIndex = 1; this->comboBox1->Click += gcnew System::EventHandler(this,
&Form1::comboBox1_Click);
//
// label2
// this->label2->AutoSize = true; this->label2->Location = System::Drawing::Point(41, 72); this->label2->Name = L"label2"; this->label2->Size = System::Drawing::Size(118, 17); this->label2->TabIndex = 2; this->label2->Text = Номер абонента
//
// label3
//

330 Часть II. Приложения Windows Form
this->label3->AutoSize = true; this->label3->Location = System::Drawing::Point(231, 72); this->label3->Name = L"label3"; this->label3->Size = System::Drawing::Size(98, 17); this->label3->TabIndex = 3; this->label3->Text = Комментарий
//
// button1
// this->button1->Location = System::Drawing::Point(399, -1); this->button1->Name = L"button1"; this->button1->Size = System::Drawing::Size(116, 101); this->button1->TabIndex = 4; this->button1->Text = Выход this->button1->UseVisualStyleBackColor = true; this->button1->Click += gcnew System::EventHandler(this,
&Form1::button1_Click);
//
// checkedListBox1
// this->checkedListBox1->FormattingEnabled = true; this->checkedListBox1->Location = System::Drawing::Point(18, 106); this->checkedListBox1->Name = L"checkedListBox1"; this->checkedListBox1->Size = System::Drawing::Size(497, 89); this->checkedListBox1->TabIndex = 5; this->checkedListBox1->ItemCheck += gcnew System::Windows::Forms::
ItemCheckEventHandler(this, &Form1::checkedListBox1_ItemCheck);
//
// textBox1
// this->textBox1->Location = System::Drawing::Point(18, 216); this->textBox1->Name = L"textBox1"; this->textBox1->Size = System::Drawing::Size(100, 22); this->textBox1->TabIndex = 6; this->textBox1->KeyDown += gcnew System::Windows::Forms::
KeyEventHandler(this, &Form1::textBox1_KeyDown);
//
// textBox2
// this->textBox2->Location = System::Drawing::Point(414, 215); this->textBox2->Name = L"textBox2"; this->textBox2->Size = System::Drawing::Size(100, 22); this->textBox2->TabIndex = 7; this->textBox2->KeyDown += gcnew System::Windows::Forms::
KeyEventHandler(this, &Form1::textBox2_KeyDown);
//
// button2
//
Глава
11. Компоненты, создающие интерфейс между пользователем и
приложением
331
this->button2->Location = System::Drawing::Point(18, 255); this->button2->Name = L"button2"; this->button2->Size = System::Drawing::Size(100, 48); this->button2->TabIndex = 8; this->button2->Text = Добавить в список this->button2->UseVisualStyleBackColor = true; this->button2->Click += gcnew System::EventHandler(this,
&Form1::button2_Click);
//
// button3
// this->button3->Location = System::Drawing::Point(423, 255); this->button3->Name = L"button3"; this->button3->Size = System::Drawing::Size(91, 48); this->button3->TabIndex = 9; this->button3->Text = Удалить из списка this->button3->UseVisualStyleBackColor = true; this->button3->Click += gcnew System::EventHandler(this,
&Form1::button3_Click);
//
// label4
// this->label4->AutoSize = true; this->label4->Location = System::Drawing::Point(-147, 241); this->label4->Name = L"label4"; this->label4->Size = System::Drawing::Size(16, 17); this->label4->TabIndex = 10; this->label4->Text = L">";
//
// button4
// this->button4->Location = System::Drawing::Point(157, 216); this->button4->Name = L"button4"; this->button4->Size = System::Drawing::Size(227, 112); this->button4->TabIndex = 11; this->button4->Text = Перед нажатием на кнопку Добавить" введите номер телефона и комментарий в левое"
L" и правое поля ввода, заканчивая каждый раз ввод нажатием
"; this->button4->UseVisualStyleBackColor = true;
//
// Form1
// this->AutoScaleDimensions = System::Drawing::SizeF(8, 16); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(522, 331); this->Controls->Add(this->button4);

332 Часть II. Приложения Windows Form
this->Controls->Add(this->label4); this->Controls->Add(this->button3); this->Controls->Add(this->button2); this->Controls->Add(this->textBox2); this->Controls->Add(this->textBox1); this->Controls->Add(this->checkedListBox1); this->Controls->Add(this->button1); this->Controls->Add(this->label3); this->Controls->Add(this->label2); this->Controls->Add(this->comboBox1); this->Controls->Add(this->label1); this->Name = L"Form1"; this->Text = L"Form1"; this->Shown += gcnew System::EventHandler(this, &Form1::Form1_Shown); this->ResumeLayout(false); this->PerformLayout();
}
#pragma endregion private: System::Void comboBox1_Click(System::Object^ sender,
System::EventArgs^ e)
{
Удаление строки из ComboBox по щелчку на ней int i=this->comboBox1->SelectedIndex; if(i== -1) return; this->comboBox1->Items->Remove(this->comboBox1->SelectedItem);
} private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{ Когда приложение завершается, надо сохранить данные ChekedListBox ив файлах Сохранение checkedListBox
// Create a file to write to
String^ path = "d:\\for_tel_sprav_chb.txt"; sw = File::CreateText( path ); //StreamWriter ^
String ^s; int y=this->checkedListBox1->Items->Count; for ( this->checkedListBox1->SelectedIndex = 0; this->checkedListBox1->
SelectedIndex < y-1; this->checkedListBox1->SelectedIndex++ )
{ s=this->checkedListBox1->Items[this->checkedListBox1->SelectedIndex]->
ToString(); sw->WriteLine(s);
}
Глава
11. Компоненты, создающие интерфейс между пользователем и
приложением
333
s=this->checkedListBox1->Items[this->checkedListBox1->SelectedIndex]->
ToString(); sw->WriteLine(s); sw->Close();
Сохранение ComboBox path = "d:\\for_tel_sprav_cb.txt"; sw = File::CreateText( path ); //StreamWriter ^ y=this->comboBox1->Items->Count; if(y==0)
{ sw->Close(); this->Close(); return;
} for ( this->comboBox1->SelectedIndex = 0; this->comboBox1->
SelectedIndex < y-1; this->comboBox1->SelectedIndex++ )
{ s=this->comboBox1->Items[this->comboBox1->SelectedIndex]->ToString(); sw->WriteLine(s);
} s=this->comboBox1->Items[this->comboBox1->SelectedIndex]->ToString(); sw->WriteLine(s); sw->Close(); this->Close();
} private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
Добавить в список
String^ r = "
"; Формирование в строке r данных, введенных в поля ввода для телефона и комментария r=r->Concat(this->textBox1->Text, r); r=r->Insert(35, this->textBox2->Text); состояние = 0 отключен this->textBox1->Text=""; this->textBox2->Text=""; this->textBox1->Focus();
} private: System::Void textBox1_KeyDown(System::Object^ sender,
System::Windows::Forms::KeyEventArgs^ e)
{ if(e->KeyCode == Keys::Enter)

334 Часть II. Приложения Windows Form
{ this->textBox2->Focus();
}
} private: System::Void textBox2_KeyDown(System::Object^ sender,
System::Windows::Forms::KeyEventArgs^ e)
{ if(e->KeyCode == Keys::Enter)
{ this->button2->Focus();
}
} private: System::Void Form1_Shown(System::Object^ sender, System::EventArgs^ e)
{
Загрузка компонентов из сохраненных от пред. сеанса файлов
Ввод первоначальных данных в ComboBox и CheckedListBox
Файл из одной строки, т. к. для ввода применен while()
Файл должен быть записан ом как текстовый в кодировке Юникод
Очистка компонентов this->comboBox1->Items->Clear(); this->checkedListBox1->Items->Clear();
Запись в checkedListBox
String^ path = "d:\\for_tel_sprav_chb.txt"; if ( !File::Exists( path ) )
{
// Create a file to write to sw = File::CreateText( path ); // StreamWriter^ try
{ sw->WriteLine( "Hello" ); Это данные для контроля ввода. sw->WriteLine( "And" ); Если читаемый файл не найден, sw->WriteLine( "Welcome" эти данные выведутся
} finally
{ if ( sw ) delete (IDisposable^)(sw);
}
}
// Open the file to read from
TextReader ^ sr = File::OpenText( path ); try
Глава
11. Компоненты, создающие интерфейс между пользователем и
приложением
335
{
String^ s = ""; while ( s = sr->ReadLine() )
{ this->checkedListBox1->Items->Add(s);
}
} finally
{ if ( sr ) delete (IDisposable^)(sr);
}
Чтение файла для ComboBox path = "d:\\for_tel_sprav_cb.txt"; if ( !File::Exists( path ) )
{
// Create a file to write to sw = File::CreateText( path ); // StreamWriter^ try
{ sw->WriteLine( "Hello" ); Это данные для контроля ввода. sw->WriteLine( "And" ); Если читаемый файл не найден, sw->WriteLine( "Welcome" эти данные выведутся
} finally
{ if ( sw ) delete (IDisposable^)(sw);
}
}
// Open the file to read from sr = File::OpenText( path ); try
{
String^ s = ""; while ( s = sr->ReadLine() )
{ this->comboBox1->Items->Add(s);
}
} finally
{ if ( sr ) delete (IDisposable^)(sr);
}
}

336 Часть II. Приложения Windows Form
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e)
{
// Обработка кнопки "Удалить из списка" if(this->checkedListBox1->SelectedIndex == -1)
строку не отметили для удаления
{
Отметьте строку для удаления, "Приложение Пользователя,
MessageBoxButtons::OK,MessageBoxIcon::Asterisk); return;
} this->checkedListBox1->Items->Remove(this->checkedListBox1->SelectedItem);
} private: System::Void checkedListBox1_ItemCheck(System::Object^ sender,
System::Windows::Forms::ItemCheckEventArgs^ e)
{
Обработка выборки из списка.
В зависимости от свойства CheckOnClick состояние флажка меняется либо от одного щелчка, либо от повторного.
Здесь установлено, что от одного щелчка.
Сюда попадаем, когда щелчком мыши выбираем строку из списка */
String ^str,^tel,^str1; int i=this->checkedListBox1->SelectedIndex;
Здесь будет индекс выбранной строки после клика (щелчка) на ней str=dynamic_cast Здесь будет выбранная строка после клика на ней tel=str->Substring(0,str->Length); выделили номер телефона
Добавка или удаление номера телефона виз Поиск строки в ComboBox: если она найдена, то удаляется, если не найдена, то после этого блока она добавляется int k=0,j=this->comboBox1->Items->Count; for(int i=0; i < j; i++)
{ str1=dynamic_cast (this->comboBox1->Items[i]); if(System::String::Compare(str1,tel) != 0)
Строки не сравнились continue;
Глава
11. Компоненты, создающие интерфейс между пользователем и
приложением
337
else
{
Object ^str2=dynamic_cast (str1);
Метод Remove() требует типа Object ^, поэтому мы перевели тип String ^ в тип Object ^ */ this->comboBox1->Items->Remove(str2); k=1; break;
}
} //for() if(k == 1) Строку удалили return;
Здесь ситуация, когда строки в ящике нет, поэтому ее надо в него добавить */ if(this->comboBox1->Items->Count > 10) return;
Если в ящике уже 10 строк, то вставлять не надо (так мы договорились, что ящик будет содержать не более 10-ти строк) */ this->comboBox1->Items->Add(tel);
}
};
} Чтобы добавить новую строку в список, надо активизировать щелчком мыши поле ввода номера телефона (оно расположено над кнопкой Добавить в список. Затем нужно ввести в это поле текст и нажать клавишу . Фокус ввода перейдет к полю над кнопкой Удалить из списка (туда вводится второй текст, например комментарий к первому введенному тексту, и снова нажимается клавиша ). Фокус ввода перейдет к кнопке Добавить в список, после чего надо снова нажать клавишу . Обе введенные строки перенесутся в поле Чтобы удалить строку из
CheckedListBox
, ее надо пометить, щелкнув на ней мышью, а затем нажать кнопку Удалить из списка. Чтобы удалить строку из
ComboBox
, надо открыть выпадающий список и щелкнуть на строке, которую требуется удалить.

338 Часть II. Приложения Windows Компоненты и Компоненты расположены в группе Common Controls палитры компонентов. Оба используются как флажки-переключатели для предоставления возможного выбора после их работы — они выдают результат "включен/выключен". Если компонент
CheckBox находится в группе себе подобных, то, включив один
CheckBox
, можно включать и остальные и при этом ни один из них не выключится те. не изменит своего состояния. Компонент
RadioButton ведет себя по-другому: когда он находится совместно ста- кими же компонентами водной группе, тоне допускает, чтобы был еще включен какой-то другой
RadioButton
— он тут же выключается. То есть в группе компонентов может быть включен только один из них, а остальные будут автоматически выключены. Оба этих компонента соответствуют математическим понятиям конъюнкции и дизъюнкции. Когда мы говорим "находится в группе, то имеется ввиду, что у множества таких компонентов один родитель (например, одна панель. Если одно множество
RadioButton находится на одной панели, а другое — на своей собственной, то включение такой кнопки на панели Ане повлияет на состояние такой же кнопки на панели B, поскольку у них разные родители. Поэтому если необходимо, чтобы кнопки
RadioButton обрабатывали несколько непересекающихся ситуаций, то такие кнопки нужно разместить на разных панелях или в других групповых контейнерах. Перечень свойств
CheckBox
, отображенных в окне Properties, представлен на риса свойств
RadioButton
— на рис. 11.65. Рис 11.64. Свойства С
Глава
11. Компоненты, создающие интерфейс между пользователем и
приложением
339 Рис 11.65. Свойства Рассмотрим некоторые свойства этих компонентов.

Appearance
— определяет форму появления компонента (в виде обычного флажка или в виде кнопки.

Checked
— поэтому свойству в режиме исполнения приложения можно определить, включен или выключен флажок.

CheckState
— устанавливает трехвидовое состояние
Checked
— флажок включен
Unchecked
— флажок выключен
Indeterminate
— состояние неопределенности (флажок закрашен в серый цвет.

ThreeState
— задает поддержку двух (
ThreeState = false
) или трех
(
ThreeState = true
) состояний. У
RadioButton этого свойства, естественно, нет, поскольку этот компонент имеет по определению всего два состояния. Если значение
ThreeState установлено в true
, то свойство
Checked всегда возвращает для любого из состояний
Checked или
Indeterminate
(те. и при значении
CheckState = Checked
, и при значении
CheckState
=
Indeterminate свойство
Checked всегда возвращает true
).

FlatStyle
— определяет стиль появления компонента (см.
CheckedListBox
).

CheckAlign
— свойство, позволяющее открыть выпадающий список, где можно выбрать схему размещения флажка в поле компонента (его можно разместить в девяти местах окна компонента, но при этом
Appearance должно быть не кнопкой.

340 Часть II. Приложения Windows Рис 1

1   ...   22   23   24   25   26   27   28   29   ...   37


написать администратору сайта