Вопрос: Обработка текстовой информации | Добавлено: 28.01.11 17:02 |
Автор вопроса: ![]() |
Ответы | Всего ответов: 41 |
Номер ответа: 16 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #16 | Добавлено: 30.01.11 12:43 |
и MS.Dispose все равно будет вызван?.. |
Номер ответа: 17 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 42 |
Профиль | Цитата | #17 | Добавлено: 30.01.11 13:30 |
ну я обычно только dispose вызываю, про файл не подумал((( |
Номер ответа: 18 Автор ответа: ![]() ![]() ![]() Вопросов: 2 Ответов: 15 |
Профиль | Цитата | #18 | Добавлено: 30.01.11 16:10 |
Скажите, а можно ли как-нибудь задать отступ всем линиям мультистрокового текстбокса? Хочется примитивненьким методом сделать так, чтобы каждая строка введенная в текстбокс, при записи в текстовый документ получала одинаковый отступ от начала строки.
Читал, что нужно воспользоваться ф-ей split, но не уразумел пока как это делается. |
Номер ответа: 19 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 42 |
Профиль | Цитата | #19 | Добавлено: 30.01.11 21:06 |
split используется для разделения строки на элементы массива, в вашем случае надо чтото вроде этого:
переменная i - нужный отступ.
\n - константа перехода на новую строку в C#, в бейсике надо его константу, вродебы VbCrLf. |
Номер ответа: 20 Автор ответа: ![]() ![]() ![]() Вопросов: 2 Ответов: 15 |
Профиль | Цитата | #20 | Добавлено: 30.01.11 23:00 |
Захарка, простите я никак не могу понять эту конструкцию.
Вы не согласились бы помочь мне с этим вопросом? Могу ли я скинуть Вам исходный проект? |
Номер ответа: 21 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 42 |
Профиль | Цитата | #21 | Добавлено: 30.01.11 23:16 |
Всегда готов помочь, но может на словах получится обьяснить? Насколько я понял под этой конструкцией понимается предыдущий пример, в нём ничего сложного нет.
1)textBox1.Text.Split('\n') - эта часть кода преобразует текст написанный в текстбоксе в строковый массив, элементами которого будут являться строки записанные в textBox(один элемент - одна строка) 2)foreach (string s1 in textBox1.Text.Split('\n')) - цикл, в каждой итерации которого элемент из описанного выше массива записывается в переменную s1 3)s1.PadLeft(s1.Length + i, ' ') - команда PadLeft выравнивает строку по левому краю, и если первый аргумент больше длины строки, то добавляет слева пробелы, что нам и нужно. 4)s = s + s1.PadLeft(s1.Length + i, ' ') + '\n' - записывает каждую строку в переменную s 5)textBox1.Text = s - записываем результат в текстбокс PS специально поставил бейсик, код на нём будет выглядеть так:
|
Номер ответа: 22 Автор ответа: ![]() ![]() ![]() Вопросов: 2 Ответов: 15 |
Профиль | Цитата | #22 | Добавлено: 30.01.11 23:36 |
Спасибо за разъяснения. Код работает, но выполняет не совсем то, что требовалось, видимо некорректно я описал задуманное. Взгляните пожалуйста на проект: http://zalil.ru/30428274 . Так будет проще понять мою проблему.
Обратите внимание, что по нажатию кнопки "Подтвердить" на диске С формируется текстовый файл. Открыв его вы увидите, что строки, в которых должны располагаться данные из текстбокса "ФИО" имеют разный отступ слева. Именно в этом у меня и заключается трудность, первую строку абзаца я сдвигаю с помощью пробелов, а на следующие таким методом повлиять не могу. Я очень рассчитываю на Вашу помощь. |
Номер ответа: 23 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 42 |
Профиль | Цитата | #23 | Добавлено: 31.01.11 00:53 |
Фух, не с первого раза, но понял в чём проблема. Я бы посоветовал сделать простой текстбокс, так на мой взгляд будет лучше выглядеть, но если с не прав, то надо добавить вот такой код:
этот код преобразовывает ФИО введённое в текстбокс (притом неважно пробелами разделены слова или переносом на новую строку) в три строчки с отступом в 5 пробелов. PS дам несколько полезных советов: 1)не обязательно писать: Chr(32) & Chr(32) & Chr(32) & Chr(32) & Chr(32) & можно обойтись всего лишь " "
2)не обязательно обьявлять переменные для TextBox1.Text, DateTimePicker1.Value, Numeric.Value и т.д., если они используются 1 или 2 раза |
Номер ответа: 24 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 42 |
Профиль | Цитата | #24 | Добавлено: 31.01.11 01:11 |
И ещщё я бы посоветовал вместо семи лейблов и комбобоксов использовать массивы контролов, это позволит намного уменьшить и упростить код. А также я нашел ошибки:
1)при нажатии кнопки очистить количество номеров ставится равное 1, а полей для выбора цены нет совсем 2)при увеличении количества номеров поля для выбора цены прибавляются, а при уменьшении лишние не исчезают |
Номер ответа: 25 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 42 |
Профиль | Цитата | #25 | Добавлено: 31.01.11 08:15 |
Вот пример кода для семи комбобоксов:
на форме только NumericUpDown1 который показывавет число видимых комбобоксов
|
Номер ответа: 26 Автор ответа: ![]() ![]() ![]() Вопросов: 2 Ответов: 15 |
Профиль | Цитата | #26 | Добавлено: 31.01.11 16:54 |
Большое спасибо за найденные ошибки и оптимизацию кода. Я и не рассчитывал на такую отзывчивость.
Но проблема с текстбоксом так и не решилась. По прежнему сдвиг осуществляется только для первой строки, но не для всех последующих. |
Номер ответа: 27 Автор ответа: ![]() ![]() ![]() Вопросов: 2 Ответов: 15 |
Профиль | Цитата | #27 | Добавлено: 31.01.11 16:59 |
Захарка, прошу прощения, я поторопился с выводами - проверил функцией MsgBox. Все работает.
Огромное спасибо Вам за советы и помощь. |
Номер ответа: 28 Автор ответа: ![]() ![]() ![]() Вопросов: 2 Ответов: 15 |
Профиль | Цитата | #28 | Добавлено: 31.01.11 17:46 |
Мне уже неудобно Вас просить, но можно ли изменить код так, чтобы перенос осуществлялся по нажатию Enter, а не при появлении пробела? Дело в том, что требуется помимо фамилии заносить и имя с отчеством. |
Номер ответа: 29 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 42 |
Профиль | Цитата | #29 | Добавлено: 31.01.11 21:48 |
А разве при нажатии клавиши Enter не работает? странно, вродебы должно, сейчас проверю |
Номер ответа: 30 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 42 |
Профиль | Цитата | #30 | Добавлено: 31.01.11 21:54 |
Странно, я не совсем понимаю что у вас не работает. Вот так у меня всё правильно
ввожу: Максименко Захар Артёмович Выводит Максименко Захар Артёмович Вот строчки связанные с получением ФИО из текстбокса и записью в файл:
|
|