опять кроссворды

  • Автор темы -
  • Дата начала

Гость
#1
а если у меня объект не слово, а символ...

один ArrayList я заполняю горизонтальными словами, другой вертикальными. Пусть, например, выводятся горизонтальные слова, потом вертикальные. Т.е. соответственно какие-то текстБоксы перекрываются. Тогда получается если я разгадываю слова по вертикали, я спокойно и главное правильно перехожу по табуляции на нужный текстБокс (кстати, хотелось бы по Enter), а по горизонтали, где пересечения курсор не мигает. Что делать? Это не есть хорошо с точки зрения юзабилити.
 
M

mms

Гость
#2
Мда, ничего не понятно :D

Что значит лист заполняется горизонтальными/вертикальными словами?

Вполне очевидно, что текст бокс который представляет какой-то символ кроссворда должен быть один, а не два, которые друг на друга накладываются, в этом случае не просто курсор не будет не виден, но и целое слово, так же надо будет делать через одно место синхронизацию этих текст боксов (типа ввёл в одном, значит и в другом тоже должно ввестись :) ). Если известно какой символ слова пересекается, но надо найти тот самый текст бокс который был создан (если был) и положить в лист ссылку на него, а не создавать новый.

Переключение по Enter, так же не сложно сделать, если известна логика связи текст боксов друг с другом. Т.е. если можно получить ссылку на "следующий" текст бокс, а её можно получить, если всё сделано правильно. В этом случае подписываеся на событие нажатия кнопки клавиатуры, и переводим фокус на следующий текст бокс.

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

Гость
#4
я решила свою проблему. Теперь у меня другая (с проверкой).
У меня тупик, не пойму почему вылетает на некотором шаге с ошибкой OutOfRange. Даже в отладке смотрела, не могу понять.
answer.Length = 36
kslovo.Count = 9
size_word - изменяется в зависимости от kslovo.Count

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

Код:
private void menuItem6_Check(object sender, System.EventArgs e)
{						
for (int i=0; i<answer.Length; i++) 
{
for (int j = 0; j<kslovo.Count; j++){
int size_word = ((KSlovo)kslovo[j]).word.Length;
for (int d = 0; d<size_word; d++)
{
KSlovo k = ((KSlovo)kslovo[i]);
if (k.word[d].Text!=answer[i].ToString())
{
k.word[d].Text = answer[i].ToString();
k.word[d].ForeColor = Color.Red;
}
i++;
}
}
}
}
 
P

Pasha

Гость
#5
Пальцем в небо:
вылетает на строчке:
KSlovo k = ((KSlovo)kslovo[i]);
надо
KSlovo k = ((KSlovo)kslovo[j]);