Влачене (Drag and Drop)
Реализацията на "влачене и пускане" (drag and drop) в Windows Forms приложение се извършва чрез обработването на поредица от събития.
В събитието MouseDown на контролата, от която започва влаченето, трябва да извикаме метода DoDragDrop(…), за да копираме данните, които ще влачим.
За да дадем възможност на контрола да получава данни при влачене, трябва да зададем стойност true на свойството й AllowDrop и трябва да прихванем събитията DragEnter и DragDrop. При обработка на DragEnter трябва да проверяваме формата на идващите данни и да позволяваме или забраняваме получаването им. Тази проверка можем да извършим чрез метода DragEventArgs.Data.GetDataPresent(…). В събитието DragDrop трябва да обработваме получените данни. Можем да ги извличаме посредством метода DragEventArgs.Data.GetData(…).
Влачене и пускане в Windows Forms – пример
Настоящия пример илюстрира как със средствата на Windows Forms могат да бъдат реализирани приложения, които използват Drag-and-Drop технологията (влачене и пускане на обекти от една контрола към друга).
Приложението, което ще създадем, ще съдържа две контроли – едната ще се използва като източник при влаченето, а другата като получател.
Ето и стъпките за изграждане на нашето приложение:
-
Стартираме VS.NET и създаваме нов Windows Forms проект.
-
Задаваме на главната форма име MainForm и заглавие "Drag and Drop Demo". Променяме и името на файла с нейния сорс код от Form1.cs на MainForm.cs.
-
Добавяме във формата две ListBox контроли с имена ListBoxSource и ListBoxTarget. Те ще бъдат съответно източник и получател при влаченето.
-
Задаваме за свойството Items на ListBoxSource списък от имена на градове – София, Пловдив, Варна, …
-
Добавяме обработчик на събитието MouseDown на ListBoxSource. В него намираме избрания елемент от списъка и извикваме метода DoDragDrop(…), с което активираме влаченето. На метода подаваме като първи параметър данните, а като втори – стойност от изброения тип DragDropEffects, указваща какъв да е резултатът от влаченето – в нашия случай е копиране:
private void ListBoxSource_MouseDown(object sender,
System.Windows.Forms.MouseEventArgs e)
{
Point mouseLocation = new Point(e.X, e.Y);
int selectedIndex =
ListBoxSource.IndexFromPoint(mouseLocation);
if (selectedIndex != -1)
{
string data = (string) ListBoxSource.Items[selectedIndex];
ListBoxSource.DoDragDrop(data, DragDropEffects.Copy);
}
}
| -
Задаваме на свойството AllowDrop на ListBoxTarget стойност true.
-
Добавяме обработчик на събитието DragEnter на ListBoxTarget. В него проверяваме дали влаченият обект е Unicode символен низ и съответно позволяваме или забраняваме пускането му:
private void ListBoxTarget_DragEnter(object sender,
System.Windows.Forms.DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.UnicodeText))
{
e.Effect = DragDropEffects.Copy;
}
}
| -
Добавяме обработчик на събитието DragDrop на ListBoxTarget. В него извличаме низа и го обработваме:
private void ListBoxTarget_DragDrop(object sender,
System.Windows.Forms.DragEventArgs e)
{
string data =
(string) e.Data.GetData(DataFormats.UnicodeText);
ListBoxTarget.Items.Add(data);
}
| -
Приложението е готово и можем да го стартираме и тестваме, като завлечем няколко града от списъка-източник в списъка-получател.
.NET Framework приложенията могат да използват конфигурационен файл, за да четат настройките си. Той представлява обикновен XML файл:
В тага могат да се добавят конфигурационни параметри на приложението, които представляват двойки от ключ и стойност. Настройките от конфигурационния файл могат да бъдат извличани по време на изпълнение по следния начин:
string username = System.Configuration.
ConfigurationSettings.AppSettings["username"];
// username = "Бай Иван"
|
От VS.NET можем да добавим конфигурационен файл като изберем File | Add New Item… | Application configuration file | App.config. При компилация App.config се копира под име <име_на_проекта.exe.config>.
Извличане на настройки от конфигурационен файл – пример
Настоящият пример илюстрира как можем да извличаме настройки от конфигурационния файл на приложението. Ще създадем приложение, което извлича стойност от своя конфигурационен файл и я показва.
Ето и стъпките на изграждане на нашето приложение:
-
Стартираме VS.NET и създаваме нов Windows Forms проект.
-
Задаваме на главната форма име MainForm и заглавие "Config File Demo". Променяме и името на файла от Form1.cs на MainForm.cs.
-
Добавяме във формата един TextBox с име TextBoxUserName и един бутон с име ButtonReadUserName. Задаваме на свойството Text на бутона стойност "Read user name from config file".
-
Добавяме конфигурационен файл на приложението, като избираме File | Add New Item… | Application configuration file | App.config. В него добавяме нов конфигурационен параметър с ключ username и стойност "Бай Иван":
-
Добавяме обработчик на събитието Click на ButtonReadUserName. В него извличаме стойността на параметъра username и я показваме в текстовото поле:
private void ButtonReadUserName_Click(object sender,
System.EventArgs e)
{
TextBoxUserName.Text = System.Configuration.
ConfigurationSettings.AppSettings["username"];
}
| -
Приложението е готово и можем да го стартираме и тестваме:
Сподели с приятели: |