Толик Панков
hex_laden
............ .................. ................
  Viewing 0 - 2  
C#, скрыть (убрать) курсор (каретку) из TextBox

Чтоб два раза не вставать, начну сразу с нескольких простейших манипуляций с курсором из TextBox.

Снятие выделения и управление местоположением курсора (каретки)


Иногда текст в многострочном TextBox'е автоматически выделяется.



И это выделение обычно не нужно. Благо снять его легко, достаточно переместить курсор.

Установка курсора в начало или конец текста


Для установки курсора в начало текста устанавливаем свойство SelectionStart в 0. Т.е. устанавливаем курсор перед первым символом текста:

//ставим курсор в начало текста
txtSampleText.SelectionStart = 0;


Установить курсор в конец текста тоже проблем не представляет:

//ставим курсор в конец текста
txtSampleText.SelectionStart = txtSampleText.Text.Length;


Выделение исчезнет, а курсор будет в начале или конце текста.

Скрытие курсора переводом фокуса


Для того, чтобы визуально скрыть текстовый курсор в TextBox, можно перевести фокус на другой объект формы. Например, далее переведем фокус на кнопку btnClose, находящуюся рядом с TextBox:



//убираем курсор (сменой фокуса на другой элемент формы)
btnClose.Select();


Но смена фокуса иногда влечет за собой нежелательные последствия, например текст нельзя будет прокручивать колесиком мышки. Если нужно, чтобы фокус оставался в TextBox, а каретка (текстовый курсор) не отображалась, стоит воспользоваться WinAPI.

Использование WinAPI для скрытия текстового курсора (каретки)


Сначала экспортируем WinAPI функцию:

public frmHideCaret()
{
    InitializeComponent();
}

[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool HideCaret(IntPtr hWnd);

//...


Потом вызываем ее в обработчике события Shown (если вызвать, например в Load не сработает, надо чтобы форма появилась):

private void frmHideCaret_Shown(object sender, EventArgs e)
{
    HideCaret(txtSampleText.Handle);
}


Весь пример на GitHub


Смотреть в репозитарии

Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2019/10/16/c-skryt-ubrat-kursor-karetku-iz-textbox/

Tags: ,
C#. Генерация строки из случайных символов.

Задача


Сгенерировать строку, состоящую из случайных символов. Немного дополним задачу, строка будет состоять из случайных символов, а сами символы будут взяты из заранее заданного определенного набора. Например, строчные и заглавные латинские буквы, цифры, знаки препинания или любые другие заданные символы в любой комбинации.
Такая штуковина вполне может пригодиться для генерации, например, пароля из заданного набора символов

Решение


Делается это довольно просто. Поручим формирование строки отдельной функции.
Во входных параметрах передадим ей строку, содержащую набор символов, из которых будет сформирована выходная случайная строка (параметр Alphabet) и длину генерируемой строки (параметр Length)

string GenRandomString(string Alphabet, int Length)
{
	...
}


Внутри функции.

//создаем объект Random, генерирующий случайные числа
Random rnd = new Random();
//объект StringBuilder с заранее заданным размером буфера под результирующую строку
StringBuilder sb = new StringBuilder(Length-1);
//переменную для хранения случайной позиции символа из строки Alphabet
int Position = 0;


Далее в цикле генерируем случайную строку:

for (int i = 0; i < Length; i++)
            {
                //получаем случайное число от 0 до последнего
                //символа в строке Alphabet
                Position = rnd.Next(0, Alphabet.Length-1);
                //добавляем выбранный символ в объект
                //StringBuilder
                sb.Append(Alphabet[Position]);                
            }


Возвращаем сгенерированную строку:

return sb.ToString();

Код функции на PasteBin

Пример использования функции


txtReturn.Text = GenRandomString("QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm", 10);

возвращает строку случайных символов длиной 10 знаков, состоящую из заглавных и строчных букв английского алфавита.

Немного об оптимизации )

Это репост заметки из моего блога на сайте http://tolik-punkoff.com
Оригинал заметки находится здесь: http://tolik-punkoff.com/2017/03/27/csharp-generatsiya-stroki-iz-sluchajnyh-simvolov/

Tags: ,
  Viewing 0 - 2