RUS_-_Karejev_-_Razrabotka_Windows-prilozhenij
.pdflabel.Text = "Checking data ..."; mainForm.PasteDateRow();
label.Text = "Loading ..."; mainForm.FillPaymentsPage(); mainForm.Explorer(); mainForm.Show(); mainForm.CheckEmployeesBirthDays();
label.Text = "Ready";
}
// Проверка имени и пароля private void CheckLogin()
{
try
{
frmHeadBand headBand = new frmHeadBand(); headBand.Show();
headBand.Cursor = Cursors.WaitCursor; headBand.label1.Text = "Checking...";
this.Visible = false;
UserGroup userGroup = UserGroup.FailGroup; DirectoryEntry de=new DirectoryEntry();
try
{
de.Path = "LDAP:// "; de.Username = txtUserName.Text; de.Password = txtPassword.Text;
// Если была неверно введена учетная запись, //тогда инструкция if сгенерирует исключение
//System.Runtime.InteropServices.COMException if(de.NativeObject == null)
MessageBox.Show("Failed");
}
catch(System.Runtime.InteropServices.COMException)
{
headBand.Dispose();
MessageBox.Show("Неверное имя пользователя или пароль", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
System.Environment.Exit(1);
}
WindowsIdentity wi = WindowsIdentity.GetCurrent(); WindowsPrincipal wp = new WindowsPrincipal(wi); if (wi.Name.ToLower() != de.Username.ToLower())
{
headBand.Dispose();
MessageBox.Show("Вы не имеете полномочий запускать данное приложение.\n\n" +
"Проверьте, что ваша учетная запись совпадает с текущей учетной записью.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
System.Environment.Exit(1);
}
// Авторизация пользователя
if (wp.IsInRole(@"SomeDomain\Administrators")) // Administrators userGroup = UserGroup.Administrators;
else if (wp.IsInRole(@"SomeDomain \Managers")) // Managers userGroup = UserGroup.Managers;
else if (wp.IsInRole(@"SomeDomain \Recipients")) // Recipients userGroup = UserGroup.Recipients;
this.OpenMainForm(userGroup, headBand.label1);
headBand.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, ex.Source); System.Environment.Exit(1);
}
}
// Настройки по умолчанию
private void InitialDefaultSettings()
{
this.MinimumSize = this.Size; this.MaximumSize = this.Size;
this.StartPosition = FormStartPosition.CenterScreen; this.txtUserName.TextChanged += new EventHandler(txtUserName_TextChanged); this.txtPassword.TextChanged += new EventHandler(txtPassword_TextChanged); this.btnOK.Click += new EventHandler(btnOK_Click);
this.btnCancel.Click += new EventHandler(btnCancel_Click);
this.Activated += new EventHandler(frmAuthorization_Activated);
}
protected override void Dispose( bool disposing )
{
// Описание метода
}
private static void Main()
{
Application.Run(new frmAuthorization());
}
private void InitializeComponent()
{
// Описание метода
}
#endregion
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void CheckTextBoxes()
{
if ((txtPassword.Text != "") && (txtUserName.Text != "")) btnOK.Enabled = true;
else
btnOK.Enabled = false;
}
private void txtUserName_TextChanged(object sender, EventArgs e)
{
this.CheckTextBoxes();
}
private void txtPassword_TextChanged(object sender, EventArgs e)
{
this.CheckTextBoxes();
}
private void btnOK_Click(object sender, EventArgs e)
{
this.CheckLogin();
}
private void frmAuthorization_Activated(object sender, EventArgs e)
{
WindowsIdentity t = WindowsIdentity.GetCurrent(); this.txtUserName.Text=t.Name.ToString(); this.txtPassword.Focus();
}
}
}
Листинг 11.3.
Форма frmDirection — форма указания направления
Эта форма используется для создания новых учебных направлений в окне проводника главной формы. Для добавления направления щелкаем в проводнике правой кнопкой и в появившемся контекстном меню выбираем New-Direction (рис. 11.31).
увеличить изображение
Рис. 11.31. Создание нового направления
В результате появляется окно, в которое вводим название направления и его описание (рис. 11.32).
Рис. 11.32. Форма frmDirection
Приступим к созданию этой формы. Помещаем на нее из окна ToolBox следующие элементы управления:
Элемент TextBox txtDirectionName, две надписи Label lblDirectionName и lblDirectionNote со свойствами Text "Направление:" и "Описание:" соответственно. Элемент TextBox txtDirectionNote (устанавливаем свойству MultiLine значение true). Для элементов TextBox создаем обработчики событий Validated (см. код программы).
Добавляем на форму две кнопки btnOK и btnCancel со свойствами Text "OK" и "Cancel" соответственно. Для них создаем обработчиков события Click (см. код программы). Также устанавливаем свойства DialogResult для этих кнопок "OK" и "Cancel" соответственно.
Устанавливаем свойства формы frmDirection:
Свойство |
Значение |
Text |
Учебный центр |
AcceptButton BtnOK
CancelButton BtnCancel
Для формы создаем обработчик события Load (см. код программы).
В классе формы добавляем поле и свойство для него:
private DataRow bindingRow; internal DataRow BindingRow
{
get { return bindingRow; } set { bindingRow = value; }
}
Помимо конструктора по умолчанию, будем использовать следующий конструктор:
public frmDirection(DataRow bindingRow)
{
InitializeComponent();
Рис. 11.34. Форма frmSearchClient
Для кнопок создаем обработчиков события Click. (см. код программы). Обратите внимание, что в коде вместо конструктора по умолчанию используется другой конструктор с параметром. Класс формы также был наследован от интерфейса ISelectingForm, и были переопределены его члены.
Листинг формы frmSearchClient:
using System;
using System.Drawing; using System.Collections;
using System.ComponentModel; using System.Windows.Forms; using System.Data;
using System.Data.SqlClient; using System.Text;
using SelectingFormInterface; using Manager.Forms;
namespace Manager
{
///<summary>
///Форма для поиска клиентов
///</summary>
public class frmSearchClient : System.Windows.Forms.Form, ISelectingForm
{
private DataTable dtClients; |
// Таблица клиентов |
public DataView dvSearchRez; |
|
private CurrencyManager currManagerClients; public CurrencyManager CurrencyManagerClients
{
get { return currManagerClients; } set { currManagerClients = value; }
}
// Объявление элементов управления
public frmSearchClient(MainDataSet mainDataSet)
{
InitializeComponent();
this.mainDataSet = mainDataSet; this.MakeStyleForDataGrid(); dtClients = mainDataSet.clients;
dtClients.RowChanged += new DataRowChangeEventHandler(dtSearchRez_RowChanged); dgSearchRez.MouseUp += new MouseEventHandler(dgSearchRez_MouseUp); dgSearchRez.Click += new EventHandler(dgSearchRez_Click);
currManagerClients = (CurrencyManager)this.BindingContext[mainDataSet, "income"];
}
private void MakeStyleForDataGrid()
{
DataGridTableStyle clientsTableStyle = new DataGridTableStyle(); clientsTableStyle.MappingName = "clients";
DataGridTextBoxColumn clientIDStyle = new DataGridTextBoxColumn(); clientIDStyle.MappingName = "clientID";
clientIDStyle.Width = 50; clientIDStyle.HeaderText = "ID";
DataGridTextBoxColumn clientFirstNameStyle = new DataGridTextBoxColumn(); clientFirstNameStyle.MappingName = "fname";
clientFirstNameStyle.Width = 150; clientFirstNameStyle.HeaderText = "Имя";
DataGridTextBoxColumn clientLastNameStyle = new DataGridTextBoxColumn(); clientLastNameStyle.MappingName = "lname";
clientLastNameStyle.Width = 150; clientLastNameStyle.HeaderText = "Фамилия";
DataGridTextBoxColumn clientFatherNameStyle = new DataGridTextBoxColumn(); clientFatherNameStyle.MappingName = "fathName"; clientFatherNameStyle.Width = 150;
clientFatherNameStyle.HeaderText = "Отчество";
DataGridTextBoxColumn clientLinkDataStyle = new DataGridTextBoxColumn(); clientLinkDataStyle.MappingName = "linkData";
clientLinkDataStyle.Width = 150; clientLinkDataStyle.HeaderText = "Контакты";
DataGridTextBoxColumn clientRecordDateStyle = new DataGridTextBoxColumn(); clientRecordDateStyle.MappingName = "recorddate"; clientRecordDateStyle.Width = 150;
clientRecordDateStyle.HeaderText = "Дата записи";
DataGridTextBoxColumn clientNotesStyle = new DataGridTextBoxColumn(); clientNotesStyle.MappingName = "note";
clientNotesStyle.Width = 150; clientNotesStyle.HeaderText = "Заметки";
DataGridTextBoxColumn clientPaymentTypeStyle = new DataGridTextBoxColumn(); clientPaymentTypeStyle.MappingName = "paymentType"; clientPaymentTypeStyle.Width = 150;
clientPaymentTypeStyle.HeaderText = "Вид оплаты";
clientsTableStyle.GridColumnStyles.AddRange(new DataGridColumnStyle[] { clientIDStyle, clientFirstNameStyle, clientLastNameStyle, clientFatherNameStyle, clientLinkDataStyle, clientRecordDateStyle, clientNotesStyle, clientPaymentTypeStyle});
dgSearchRez.TableStyles.Add(clientsTableStyle);
}
protected override void Dispose( bool disposing )
{
// Описание метода
}
private void InitializeComponent()
{
// Описание метода
}
// Начать поиск
private void btnFind_Click(object sender, System.EventArgs e)
{
try
{
dvSearchRez = new DataView(dtClients);
string str = @"fname LIKE '" + txtFname.Text + @"' OR lname LIKE '" + txtLname.Text + @"'" + @" OR recorddate = '" + dtpRecDate.Value.Date.ToString() + @"'";
dvSearchRez.RowFilter = str;
dgSearchRez.DataSource = dvSearchRez;
currManagerClients = (CurrencyManager)this.BindingContext[dvSearchRez, null];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, ex.Source);
}
}
// Обновление данных
private void btnGetChanges_Click(object sender, System.EventArgs e) // внести изменения
{
try
{
daSearch.Update(dtClients.GetChanges()); btnGetChanges.Enabled = false;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, ex.Source);
}
}
// Доступ к кнопке изменений
private void dtSearchRez_RowChanged(object sender, DataRowChangeEventArgs e)
{
btnGetChanges.Enabled = true;
}
private void btnExit_Click(object sender, System.EventArgs e)
{
this.Close();
}
private void dgSearchRez_ShowParentDetailsButtonClick(object sender, EventArgs e)
{
MessageBox.Show("OK");
}
private void dgSearchRez_MouseUp(object sender, MouseEventArgs e)
{
Point point = new Point(e.X, e.Y);
int rowIndex = dgSearchRez.CurrentRowIndex;
if (rowIndex >= 0)
{
System.Windows.Forms.DataGrid.HitTestInfo hti = dgSearchRez.HitTest(point); this.SelectedRow = dvSearchRez[hti.Row].Row;
}
}
#region IFindingForm Members
private DataRow selectedRow; public DataRow SelectedRow
{
get
{
return selectedRow;
}
set
{
selectedRow = value;
}
}
#endregion
}
}
Листинг 11.6.
Форма frmClient
Форма frmClient, используемая для добавления новых клиентов, содержит ряд вкладок. Располагаем элементы управления и называем их в соответствии с рис. 11.35–11.38.
Рис. 11.37. Вкладка "Архив"
Рис. 11.38. Вкладка "Группы клиента"
Листинг frmClient:
using System; using System.Data;
using System.Data.SqlClient; using System.Drawing;
using System.Collections; using System.ComponentModel; using System.Windows.Forms; using Manager.Forms;
