FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Программирование на C#
На страницу Пред.  1, 2
 
Начать новую тему   Ответить на тему    Список форумов PrintStore.ru - система учета расходных материалов -> Обмен опытом
Предыдущая тема :: Следующая тема  
Автор Сообщение
SergeyK



Зарегистрирован: 09.11.2010
Сообщения: 21

СообщениеДобавлено: Пн Янв 17, 2011 17:37 17.01.2011    Заголовок сообщения: Ответить с цитатой

Спасибо за информацию! Я раньше на Delphi программировал. Но Delphi, как я понимаю,умер Crying or Very sad Хочется выучить что -то современное и перспективное Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Michael
Руководитель проекта


Зарегистрирован: 12.10.2005
Сообщения: 2488
Откуда: Москва

СообщениеДобавлено: Пн Янв 17, 2011 17:59 17.01.2011    Заголовок сообщения: Ответить с цитатой

Я бы, если сейчас начинал, изучал бы SDK под Android. Реально перспективно. Ну а на PC, да, самое оптимальное - это NET.
_________________
Любой путь начинается с первого шага
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
JoKeR
Почетный активист проекта


Зарегистрирован: 09.12.2008
Сообщения: 393

СообщениеДобавлено: Вт Мар 01, 2011 15:18 01.03.2011    Заголовок сообщения: Ответить с цитатой

А как сделать окошко, отображаемое во время выполнения процесса и закрыть по завершению процесса?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Velavok
Разработчик


Зарегистрирован: 08.12.2008
Сообщения: 39

СообщениеДобавлено: Ср Мар 02, 2011 11:35 02.03.2011    Заголовок сообщения: Ответить с цитатой

JoKeR писал(а):
А как сделать окошко, отображаемое во время выполнения процесса и закрыть по завершению процесса?


Если в окошке не должен отображаться прогресс выполнения, то
можно так:
1. Создаем главную форму.
2. Создаем форму, которая будет отображаться во время выполнения процесса
3. Во 2-ю форму добавляем код на событие Shown:
Код:
   
            Application.DoEvents();
            bool result = DoSomething();
            DialogResult = result ? DialogResult.OK : DialogResult.Cancel;
            Close();
            Application.DoEvents();

4. Вызов этого окошка осуществляется кодом:
Код:

ActionDlg dlg = new ActionDlg ();
DialogResult res = dlg.ShowDialog();// для модального, для не модального dlg.Show()


Отображением прогресса выполнения делается по сложнее. Но если нужно то напишу как.

Решил написать свой Принтстор с блэк джеком и отчетами?Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
JoKeR
Почетный активист проекта


Зарегистрирован: 09.12.2008
Сообщения: 393

СообщениеДобавлено: Ср Мар 02, 2011 13:19 02.03.2011    Заголовок сообщения: Ответить с цитатой

Хлеще! Решил, что за Вами не угнаться и начал рисовать сразу облачную ОС Smile

Переношу свой старый проект по анализу биллинговых отчетов с Делфей на C#.

По теме:
DoSomething() - это кто?
Ошибка 1 Элемент "DoSomething" не существует в текущем контексте.
Я так понимаю какая-то функция.

И с прогрессом было бы куда интересней.

Спасибо за помощь.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Velavok
Разработчик


Зарегистрирован: 08.12.2008
Сообщения: 39

СообщениеДобавлено: Ср Мар 02, 2011 13:51 02.03.2011    Заголовок сообщения: Ответить с цитатой

DoSmthing() - это метод класса который выполняет нужное действие.

С прогрессом по сложнее:
1. Создаем форму аналогично первому случаю.
2. Кидаем на неё BackgroundWorker (находится во вкладке Компоненты)
3. Кидаем на неё прогрессбар
4. Делаем метод выполняющий нужное нам действие в несколько этапов:
Код:

private void DoSmth(BackgroundWorker bgWorker)
{
           
            for (int i=0; i<Steps; ++i)
            {
                 DoStep(); // делаем действие
                 int delta = i*100/Steps;// вычисляем процент завершенности
                 bgWorker.ReportProgress(i);
            }
            bgWorker.ReportProgress(100);
}

, где DoStep() - метод выполняющий один шаг алгоритма
Steps - кол-во всех шагов алгоритма.

5. На событие Shown формы вешаем следующий код:
Код:

            progressBar1.Maximum = 100;
            progressBar1.Value = 0;
            backgroundWorker1.RunWorkerAsync();

6. На событие DoWork у backgroundWorker1 вешаем:
Код:

DoSmth(backgroundWorker1);

7.На событие ProgressChanged у backgroundWorker1 вешаем:
Код:

            if (e.ProgressPercentage<=progressBar1.Maximum && e.ProgressPercentage>=progressBar1.Minimum)
                progressBar1.Value = e.ProgressPercentage;
            else
                if (e.ProgressPercentage>progressBar1.Maximum)
                    progressBar1.Value = progressBar1.Maximum;
                else
                {
                    if (e.ProgressPercentage < progressBar1.Minimum)
                        progressBar1.Value = progressBar1.Minimum;
                }

тут на всякий случай добавлены проверки на граничные условия
8. На событие RunWorkerCompleted у backgroundWorker1 вешаем:
Код:

            progressBar1.Value = 100;
            Visible = false;
            Close();

9. Вызываем аналогично первому случаю.

Вроде должно работатьSmile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
JoKeR
Почетный активист проекта


Зарегистрирован: 09.12.2008
Сообщения: 393

СообщениеДобавлено: Ср Мар 02, 2011 13:53 02.03.2011    Заголовок сообщения: Ответить с цитатой

Еще маленький вопрос.
Могу ли я как-нибудь получить код записи после её добавления в БД?
Или же всё равно необходимо писать после добавления запрос (типа SELECT MAX(id) FROM table).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Velavok
Разработчик


Зарегистрирован: 08.12.2008
Сообщения: 39

СообщениеДобавлено: Ср Мар 02, 2011 14:09 02.03.2011    Заголовок сообщения: Ответить с цитатой

JoKeR писал(а):
Еще маленький вопрос.
Могу ли я как-нибудь получить код записи после её добавления в БД?
Или же всё равно необходимо писать после добавления запрос (типа SELECT MAX(id) FROM table).

Для разных СУБД разные способы. В аксессе нельзя.
При работе с MSSQLServer например можно так:
SELECT IDENT_CURRENT ('table') AS Current_Identity;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов PrintStore.ru - система учета расходных материалов -> Обмен опытом Часовой пояс: GMT + 4
На страницу Пред.  1, 2
Страница 2 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group