Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с TextBox

2.1K
16 апреля 2007 года
госик
98 / / 20.11.2006
Есть класс, который отвечает за клетки кроссворда, в котором должны быть буквы. Данный элемент кроссворда создается через TextBox. Но эти клеточки такие маленькие получаются, а изменяешь размер - они увеличиваются только в длину. И мне нужно, чтобы в каждом таком ТекстБоксе можно было бы писать только одну буковку. Как так сделать? Желательно, чтобы курсор после введенной буковки переходил автоматически на другой ТекстБокс - для этого тогда придется делать массив ТекстБоксов? Тогда это будет значить, что элементом кроссворда уже будет не буква, а слово :(

Код:
public class KLetter : System.Windows.Forms.TextBox
{        
    public int x, y;
    Color clr;
    public KLetter (int height, int wight, Color clr, int x, int y)
    {            
        this.Location = new Point(x, y);
        this.Size = new Size(wight, height);
        this.ForeColor = Color.Green;
        this.BackColor = clr;
    }
    public void Drawing(PaintEventArgs e, int xOffset, int yOffset)
    {
        Graphics g = e.Graphics;
        Pen pen = new Pen(Color.Red, 0.5f);
        Pen line = new Pen(Color.Black, 10f);

        this.SuspendLayout();            
    }
}

А в классе Форма (который создается автоматически) в одной из функций вот так добавляются текстбоксы:
 
Код:
if (array[i,j]=='*')
{
KLetter kl = new KLetter(20, 20, Color.White, xbaseOffset, ybaseOffset);
this.Controls.Add(kl);
//kletter.Add(kl);
xbaseOffset += 20;
}

Что нужно и где еще добавить, чтобы получить желаемый результат?
242
17 апреля 2007 года
Оlga
2.2K / / 04.02.2006
Цитата:
Но эти клеточки такие маленькие получаются, а изменяешь размер - они увеличиваются только в длину

 
Код:
TextBox1.Multiline = true;

Цитата:

И мне нужно, чтобы в каждом таком ТекстБоксе можно было бы писать только одну буковку

 
Код:
TextBox1.MaxLength = 1;
2.1K
17 апреля 2007 года
госик
98 / / 20.11.2006
Ой, спасибо тебе огромное за помощь и за терпение! У меня столько вечно вопросов!

Вопросы:

1) а где все введеные буквы фиксируются? Ну чтобы потом можно было сравнить все буквы с каким-нибудь эталоном? или чтобы изменить цвет только определенных букв? Ну и все в этом духе...

2) а можно еще обрабатывать текстБокс при вводе букв. Я имею в виду, например, при вводе буквы - цвет ТекстБокса будет одним, при ожидании ввода (т.е когда курсор стоит на какой-то клетке) - другой цвет, а когда буква введена - еще какой-то цвет? :)

3) Ну и еще... Как ты думаешь, мне нужно иметь класс клетка кроссворда или все-таки слово кроссворда?
242
17 апреля 2007 года
Оlga
2.2K / / 04.02.2006
TextBox члены
я обычно выделяю объект, а затем в окне Properties изучаю свойства, тоже самое с событиями: выбираешь объект, кликаешь на значке молния(см. вложение) и получаешь список событий.
в рус. мсдн не увидела полного списка, надо посмотреть на англ. TextBox Members
242
17 апреля 2007 года
Оlga
2.2K / / 04.02.2006
Цитата:
а где все введеные буквы фиксируются?

 
Код:
TextBox1.Text

Цитата:
а можно еще обрабатывать текстБокс при вводе букв. Я имею в виду, например, при вводе буквы - цвет ТекстБокса будет одним, при ожидании ввода (т.е когда курсор стоит на какой-то клетке) - другой цвет, а когда буква введена - еще какой-то цвет? :)


можно. почитай какии совытия есть и тексбох и действуй, например события: MouseEnter, TextChenged ...

Цитата:
Ну и еще... Как ты думаешь, мне нужно иметь класс клетка кроссворда или все-таки слово кроссворда?


незнаю :) если клетка - это просто ТексБох и тебе не надо больше обрабатывать для нее никаких дополнительных свойств, характеристик объекта, кроме уже имеющихся, тогда возможно тебе такого класса и не надо.

2.1K
17 апреля 2007 года
госик
98 / / 20.11.2006
а как думаешь, раньше я хотела все сделать через ректенжелы, а теперь через ТекстБоксы, так удобнее? :)
Спасибо, буду пробовать дальше доделывать свой кроссвордик... До следующих вопросов :)
242
18 апреля 2007 года
Оlga
2.2K / / 04.02.2006
Цитата:
раньше я хотела все сделать через ректенжелы


а это что такое? rectangles? т.е. рисовать квадратики средствами GDI? думаю текстбох'ы проще.

20K
05 марта 2008 года
Camarada
44 / / 08.07.2007
Меня интересует, как заставить TextBox изменить свою высоту по высоте содержащегося в нем текста. TextBox.AutoSize не работает.
5
05 марта 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: Camarada
Меня интересует, как заставить TextBox изменить свою высоту по высоте содержащегося в нем текста. TextBox.AutoSize не работает.


 
Код:
textBox1.ClientSize = new Size(textBox1.ClientSize.Width, (int)textBox1.Font.Size);
241
07 марта 2008 года
Sanila_san
1.6K / / 07.06.2005
А почему бы не использовать DataGridView? ;)
20K
07 марта 2008 года
Camarada
44 / / 08.07.2007
Цитата: hardcase
 
Код:
textBox1.ClientSize = new Size(textBox1.ClientSize.Width, (int)textBox1.Font.Size);



hardcase, я имел ввиду то, что текст не в одну строчку
TextBox::Multiline = true

20K
07 марта 2008 года
Camarada
44 / / 08.07.2007
Цитата: Sanila_san
А почему бы не использовать DataGridView? ;)



Согласен, DataGridView здесь незаменим, если не ищешь себе геморроя. Можно обрабатывать события от каждой ячейки итд. Миллион текстбоксов либо ректанглов - коряво выглядит.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог