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

1 ... 53 54 55 [ 56 ] 57 58 59 ... 170


private void richTextBoxl DragDrop(object sender, DragEventArgs e) {

richTextBoxl.LoadFile((String)e.Data.GetData( Text ),

System.Windows.Forms.RichTextBoxStreamType.RichText);

Как определить наличие полос прокрутки в элементе RichTextBox?

Проверить наличие полос прокрутки в элементе RichTextBox можно с помощью стиля wsHSCROLL (горизонтальная полоса прокрутки) и wsvscroll (вертикальная полоса прокрутки). Проверка (листинг 6.34) осуществляется

при помощи функции Windows API GetWmdowLong.

; Листинг 6,34. Проверка на наличие полосы прокрутки в RichTextBox

[Dlllmport( User32.dll )]

static extern int GetWindowLong(IntPtr hWnd, int nindex);

const int GWL STYLE = -16;

const mt WS HSCROLL = 0x00100000;

const int WS VSCROLL = 0x00200000;

Проверка на наличие вертикальной прокрутки bool IsVertScrollPresent(Control control) {

int style = GetWindowLong(control.Handle, GWL STYLE); return (style & WS VSCROLL) > 0;

Проверка на наличие горизонтальной прокрутки bool IsHorScrollPresent(Control control)

private void richTextBoxl DragEnter(object sender.

System.Windows.Forms.DragEventArgs e)

if (((DragEventArgs)e).Data.GetDataPresent(DataFormats.Text)) ((DragEventArgs)e).Effect = DragDropEffects.Move;

else

((DragEventArgs)e).Effect = DragDropEffects.None;



168 Глава 6

int style = GetWindowLong(control.Handle, GWL STYLE); return (style & WS HSCROLL) > 0;

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

textBoxl.Text = Вертикальная прокрутка: +

IsVertScrollPresent(richTextBoxl).ToStringO + Environment.NewLine + Горизонтальная прокрутка: + IsHorScrollPresent(richTextBoxl).ToStringO;

В принципе, этот код можно применить также для текстовых полей и других элементов, которые имеют встроенные полосы прокрутки.

Как запретить вставку

Вставлять из буфера обмена в RichTextBox можно двумя способами: через комбинацию клавиш <Ctrl>+<V> или через комбинацию клавиш <Shift>+ +<lnsert>. Таким образом, если вам необходимо установить запрет на вставку из буфера обмена, то нужно перехватить нажатия на эти клавиши, как это сделано в листинге 6.35.

Листинг 6,35, Запрет на еставку из буфера обмена

public Forml() {

RichTextBoxEx rboxex = new RichTextBoxEx(); rboxex.Parent = this; rboxex.Top = 400;

class RichTextBoxEx : RichTextBox {

protected override bool ProcessCmdKey(ref Message msg. Keys keyData) {

Проверяем на нажатие Shift+Insert и Ctrl+V if ((keyData & (Keys.Shift Keys.Insert)) == (Keys.Shift Keys.Insert) II ((keyData & (Keys.Control Keys.V)) == (Keys.Control I Keys.V)))



Мы создали новый класс RichTextBoxEx И В мстодс ProcessCmdKey отслеживаем нажатия интересующих нас клавиш, не позволяя вставлять содержимое буфера обмена в наш элемент управления.

Более подробную информацию о формате RTF вы можете прочитать в Википедии по адресу http: ru.wikipedia.org/wiki/Rich Text Format.

Примечание

Примеры работы с элементом RichTextBox нзходятся В пзпке RichText-BoxDemo на прилагаемом диске

Элемент управления MaskedTextBox

в .NET Framework 2.0 появился новый элемент управления MaskedTexBox, который служит для ввода данных определенного формата. Символы маски нужно задать во время разработки, чтобы указать тип и формат данных, которые может ввести пользователь. Например, можно настроить элемент таким образом, чтобы пользователь мог вводить только цифры, цифры и скобки (например, телефонный номер (095)6015629), цифры и тире (например, номер страховки 45-4993-3459) и другие варианты. Рекомендую самостоятельно изучить возможности элемента и почитать документацию. Появление данного элемента избавило программистов от необходимости создания собственных элементов на основе текстового поля для решения подобных задач.

Элемент DateTimePicker

Как показать пустой текст,

если в DateTimePicker не выбрана дата?

Если по каким-то причинам вам нужно показать пустой текст в злсмсте

DateTimePicker, ТО ИСПОЛЬЗуЙте КОД, приведенНЫЙ В ЛИСТИНГе 6.36 )мр.1 боТЧИКе события Click КНОПКИ.

return true; return base. ProcessCindKey(ref msg, keyData) ;



1 ... 53 54 55 [ 56 ] 57 58 59 ... 170

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