Программирование >>  Автоматически обновляемые приложения 

1 ... 45 46 47 [ 48 ] 49 50 51 ... 170


........

[ Листинг 6.5. Окантовка вокруг элемента управления

private void Forml Paint(object sender, PaintEventArgs e)

Graphics g = e.Graphics;

Pen p = new Pen(Color.Red, 3);

foreach(Control Ctrl in this.Controls) {

if(Ctrl.GetType() == typeof(CheckBox)) {

g.DrawRectangle(p,new Rectangle(ctrl.Location, ctrl.Size)

Запустив проект, вы увидите, что элемент checkBox обведен красной рамочкой. Естественно, подобный прием таюке можно применить практически к любому элементу управления.

Примечание

Примеры находятся в папке ControIsDemo на прилагаемом диске.

Как программно перевести фокус

на следующий/предыдущий (в порядке TAB)

элемент управления?

Чтобы программно перевести фокус на следующий элемент управления, можно использовать метод Control.seiectNextControi. Предположим, мы хотим перевести фокус с текстового поля на кнопку, если в текстовом поле пользователь введет 5 символов. Тогда можно воспользоваться кодом из листинга 6.6.

: Листинг 6.6. Программный перевод фокуса на другой элемент управления

private void textBoxl TextChanged(object sender, EventArgs e)

const int MAX LENGTH = 5; 6 Зак 262



if (textBoxl.Text.Length == MAX LENGTH)

переводим фокус на следующий элемент управления SelectNextControl(textBoxl, true, true, false, false) ;

Кстати, если у вас на форме расположено слишком много элементов управления, и вы хотите узнать порядок, по которому будет переходить фокус, то выберите в меню View команду Tab Order. Все элементы управления после данного трюка получат порядковый номер, который будет соответствовать их свойству Tabindex (рис. 6.1). Вы можете быстро изменить существующий порядок. Достаточно пощелкать мышкой по этим номерам в нужной последовательности.

WindowsApplicationl - Microsoft Visual Studio

File Edit View Project Buiid Debug Plnvoke.net Data Format lools Window Com J --J £f У i# ; ..0. .b -P -Jir Debug - Any CPU

Object Brcftvser istait Page tForml.cs* Foi-mi.cs [Design]*

С =

В button 1

Рис. 6.1. Порядковые номера для Tabindex

Как изменить Z-порядок элемента управления?

Метод SetChildlndex КЛаССа System.Windows.Forms.Control.

ControlCollection позволяет изменять Z-порядок элемента управления на форме. Предположим, на форме одна кнопка частично перекрывает вторую



Листинг 6.7. Изменение Z-порядка

private void button2 Click(object sender, EventArgs e) {

Выводим кнопку button2 на передний край this.Controls.SetChildlndex(button2, 0);

Примечание

Примеры находятся в папке Controls на прилагаемом диске.

Как узнать размеры строки в пикселах, отображаемой в каком-нибудь элементе управления?

Чтобы узнать размер строки в пикселах, нужно использовать метод Graphics.Measurestring. Подобная необходимость возникает, когда нужно подогнать размеры самого элемента управления под размер самой широкой строки текста. Предположим, нужно установить ширину элемента Button таким образом, чтобы любой длинный текст нормально отображался бы в ней (листинг 6.8).

: Листинг 6.8. Получение размеров строки в пикселах

public partial class Forml : Form {

const string strTextForButton = Тестовая строкаааааааааааааа ;

public Forml() {

InitiaiizeComponent(); buttonl.Text = StrTextForButton;

using (Graphics graphics = buttonl.CreateGraphics())

кнопку. Чтобы закрываемую кнопку вывести вперед, нужно присвоить параметру newlndex метОДа SetChildlndex значение О (ЛИСТИНГ 6.7).



1 ... 45 46 47 [ 48 ] 49 50 51 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика