void Copy(const komand ^ t, Control ^ a)
{
if (t->str->Length>str->Length)
throw gcnew Exception("Длина строки-приемника меньше длины строки-источника!");
if (t->str=="" && str=="") throw not_enter();
else
{
array<Char>^mas1 = str->ToCharArray();
array<Char>^mas2 = t->str->ToCharArray();
int n = str->Length;
str = "";
for (int i=0; i<t->str->Length; i++)
{
a->Text=to_Bin(i+1); // текущий индекс
Threading::Thread::Sleep(200); // задержка
if (i==str->Length-1) break;
mas1=mas2;
}
for (int i=0; i<n; i++) str+=mas1;
}
//return this;
}
У меня вопрос
Я программирую на С++ в среде .NET. У меня есть h-файл, содержащий ссылочный класс виндовской формы, в нем приватные поля textbox'ы.
Еще один h-файл у меня содержит ссылочный класс, в котором одно единственное поле типа String^, 2 метода - копирование строки в строку, сравнение 2-х строк.
короче, возможно ли сделать так, чтобы в методах этого класса я мог написать имена нужных текстбоксов (из класса формы) и менять их содержимое непосредственно там, а в обработчике просто вызвать метод и текстбоксы обрабатывались бы в соответствии с содержимым метода? надеюсь понятно объяснил
Зато можете написать метод, который принимает на вход два параметра типа Control^ (TextBox-а наследуются от него) и меняет их свойства Text при вашем условии.
Код:
метод копирует строку в строку. при вызове метода мне необходимо ,чтоб в переменную Control ^ a с задержкой в несколько секунд перезаписывались текущие символы. проблема в том, что по окончании его выполнения в текстбоксе лежит только окончательное значение, нет эффекта пошаговости. что можно сбелать чтобы вывод происходил по шагам и с задержкой?
Цитата: Revenant
метод копирует строку в строку.
Концептуально, копировать строку в другую строку нельзя. String^ представляет собой константный объект.
Цитата: Revenant
при вызове метода мне необходимо ,чтоб в переменную Control ^ a с задержкой в несколько секунд перезаписывались текущие символы
Вариант с работой в одном потоке управления:
Код:
void Copy(const komand ^ t, Control ^ a)
{
String^ source = t->str;
for(int sub_len = 1; sub_len <= source->Length; ++sub_len) {
String^ sub_source = source->Substring(0, sub_len);
a->Text = sub_source;
Thread::Sleep(200); // эмулируем задержку
Application::DoEvents(); // обрабатываем очередь сообщений
}
}
{
String^ source = t->str;
for(int sub_len = 1; sub_len <= source->Length; ++sub_len) {
String^ sub_source = source->Substring(0, sub_len);
a->Text = sub_source;
Thread::Sleep(200); // эмулируем задержку
Application::DoEvents(); // обрабатываем очередь сообщений
}
}
Спасибо большое Вам за помощь.