Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск нового потока на время, Мнопоточность, Потоки на время 
V
    Опции темы
Azzdorf
  Дата 29.3.2007, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



Концепция: Приложение для динамического созания форм(Word), и посылки их на печать. Программа использует одно полученное значение, которое вводит сам пользотель в MaskedBox (цифра из 16символов), когда MaskFull = true, программа проверяет базу данных (в виде ArrayList, пары значений: число - название), если находит соответствуещее значение (в виде название), то помещает его в TextBox, в котором Enebled = false; если нет, то появляеться еще одна форма, которая говорит, мол так и так, такого числа в базе нет, закрываеться и делает TextBox.Enebled = true; мол сам введи значения, когда ввел название к данному значению, появляеться возможность добавления пары значений число - название в базу данных.

Суть проблемы: В запуске второй формы, той, которая выполняет функцию подсказки, пробовал работать з System.Timers.Timer, всё неудачно, потом решил использовать потоки, и всё было ок, пока не начал на пусутую форму липить контролы, оны то не прорисовываються, поскольку я использовал Thread.Sleep(1000);

Помогите пожайлуста, возможно нужно другое направления для мыслей.
P.S. Моя первая программа, С# только 1-ый месяц изучаю, и вообще это мой первый язык, ранее был Юзером не более, а теперь хочется созидать...

Код Прилагаеться....


Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Threading;
using System.Timers;
using System.Windows.Forms;

namespace TIMER
{
    public class MyForm : Form
    {
        [STAThread]
        public static int Main(string[] args)
        {
            Application.Run(new MyForm());
            return 0;
        }

        TextBox txtBinsert = new TextBox();
        TextBox txtBoutvalue = new TextBox();
        Button btnCheck = new Button();

        FastHelp fH = new FastHelp();

        public MyForm()
        {
            CenterToScreen();
            Size = new Size(300, 250);

            InitializeComponent();
        }
        private void InitializeComponent()
        {
            txtBinsert.Size = new Size(200, 50);
            txtBinsert.Location = new Point(10, 10);
            txtBinsert.Font = new Font("Arial Black", 10);
            Controls.Add(txtBinsert);

            txtBoutvalue.Size = new Size(200, 50);
            txtBoutvalue.Location = new Point(10, 50);
            txtBoutvalue.Font = new Font("Arial Black", 10);
            txtBoutvalue.Enabled = false;
            Controls.Add(txtBoutvalue);

            btnCheck.Location = new Point(10, 90);
            btnCheck.Size = new Size(50, 30);
            btnCheck.Text = "Check";
            btnCheck.Click += new EventHandler(btnCheck_Click);
            Controls.Add(btnCheck);
        }
        private void btnCheck_Click(object sender, EventArgs e)
        {
            if (txtBinsert.Text == "1")
            {
                txtBoutvalue.Text = "JOPA";
            }
            else if (txtBinsert.Text == "2")
            {
                txtBoutvalue.Text = "JOPA";
            }
            else
            {
                txtBoutvalue.Text = null;
                StartHelpForm();
                txtBoutvalue.Enabled = true;
            }
        }
        private void StartHelpForm()
        {
            Do do1 = new Do();
            Thread t1 = new Thread(new ThreadStart(do1.DoSleep));
            t1.Start();
            fH.Close();
        }
    }
    public class FastHelp : Form
    {
        public Label lbl = new Label();
        
        public FastHelp()
        {
            CenterToScreen();
            Size = new Size(150, 150);
            Opacity = 0.85;

            InitializeComponent();
        }
        private void InitializeComponent()
        {
            FormBorderStyle = FormBorderStyle.FixedSingle;
            ControlBox = false;
            MinimizeBox = false;
            MaximizeBox = false;

            lbl.Location = new Point(10,10);
            lbl.AutoSize = true;
            lbl.Font = new Font("Arial Black", 8);
            lbl.BackColor = Color.Orange;
            lbl.Text = "URA";
            Controls.Add(lbl);
        }
    }
    public class Do
    {
        public void DoSleep()
        {
            FastHelp fH = new FastHelp();
            fH.Show();
            Thread.Sleep(1000);
        }
    }
}

--------------------
Иногда шаг вперед - это результат хорошего пинка под зад.
PM MAIL   Вверх
tol05
Дата 29.3.2007, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



А зачем вторая форма? почему просто не использовать давно всем полюбившийся MessageBox?


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Azzdorf
  Дата 29.3.2007, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



Цитата(tol05 @ 29.3.2007,  12:54)
А зачем вторая форма? почему просто не использовать давно всем полюбившийся MessageBox?

Вторая форма нужна для уведомления пользователя про отсутствие данных в базе.

Про MessageBox думал, но есть идея создания именно такох подсказки, которая закрываеться автоматически (пользователь знает про то что будет написано на 2-й форме, будет ограниченое количество пользователей, хотя пока и не исключено, что содержание 2-й формы будет меняться).

Суть даного придложения в автоматизации (оптимизации, ускорении одного логистического процесса), и нужно экономить на кажой секунде.
--------------------
Иногда шаг вперед - это результат хорошего пинка под зад.
PM MAIL   Вверх
stashe
Дата 29.3.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 5.1.2007
Где: Донецк

Репутация: 1
Всего: 1



Обьясни логику, для чего тебе таймер или thread? что будет меняться со временем? (сам новичок, но мож чем помогу) smile 
PM   Вверх
ivashkanet
Дата 29.3.2007, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Лови:
На новую фору добавлен таймер, который поставлен на 1 секунду, по истечении этого времени форма останавливается
Код

  public class FastHelp : Form
    {
        public Label lbl = new Label();
        private Timer _timer; // Тута добавлено
        // Стырено с дизайнера форм. Не смог прикрутить таймер в другое место
        private System.ComponentModel.IContainer components = null;

        public FastHelp()
        {
            CenterToScreen();
            Size = new Size(150, 150);
            Opacity = 0.85;
            InitializeComponent();
        }
        private void InitializeComponent()
        {
            FormBorderStyle = FormBorderStyle.FixedSingle;
            ControlBox = false;
            MinimizeBox = false;
            MaximizeBox = false;
            lbl.Location = new Point(10, 10);
            lbl.AutoSize = true;
            lbl.Font = new Font("Arial Black", 8);
            lbl.BackColor = Color.Orange;
            lbl.Text = "URA";
            Controls.Add(lbl);

            // Стырено из того же дизайнера форм. 
            this.components = new System.ComponentModel.Container();
            // Инициализация таймера
            _timer = new Timer(this.components);
            _timer.Interval = 1000; // 1 секунда 
            _timer.Tick += new EventHandler(_timer_Tick);
            _timer.Start();
        }

        void _timer_Tick(object sender, EventArgs e)
        {
            this.Close();
        }
    }



Azzdorf, оно конечно похвально не использовать дизайнер форм, но все же с ним будет лучше ;-)

Добавлено через 59 секунд
Цитата(stashe @  29.3.2007,  12:40 Найти цитируемый пост)
что будет меняться со временем?

Ничего smile
Просто через время нужно будет закрыть "назойливую" форму smile
PM MAIL WWW ICQ   Вверх
stashe
Дата 29.3.2007, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 5.1.2007
Где: Донецк

Репутация: 1
Всего: 1



я так и думал, дело конечно за разработчиком, но....по времени закрывать форму??? smile , а если я хочу чтобы она закрылась раньше, или ждать пока она закроется??? а button'ы??? (конечно если это только не учебный пример)
PM   Вверх
Azzdorf
  Дата 29.3.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



Цитата(stashe @ 29.3.2007,  13:54)
я так и думал, дело конечно за разработчиком, но....по времени закрывать форму??? smile , а если я хочу чтобы она закрылась раньше, или ждать пока она закроется??? а button'ы??? (конечно если это только не учебный пример)

Что скажу 2: stashe: Вполне реальный, местами даже комерчиский банковский проект, Там будет очень ограниченое колическтво юзеров (все нереально быстро работает, такая работа, что за минуту нужно анализировать и принимать решения по 20 ситуациям, не люди а роботы), Они будет знакомы со всеми типами моей FastHelp(), К тому же, нельзя будет занести пары значений в базу с пустыми значениями, Поэтому повторно нажав Батон можно снова увидеть ту же форму, К тому же котролы типа батонов, могут там и не быть, Хотя думаю что со временем прийдется туда дописать батон на закрытие или событие на какуюто нажатую клавишу.


2: ivashkanet: Большое спасибо, Ато я тут сильно далеко зашол, но ничего так и не нашол. Я пробовал работать с таймером System.Timers.Timer, только там нету события Tick, а есть чучуть другое, с которым у меня компилятор выдавал ошибку и говорил Best to use Tread`s for work., Всё Равно Огромное спасибо.http://forum.vingrad.ru/html/emoticons/pack/yahoo.gif
--------------------
Иногда шаг вперед - это результат хорошего пинка под зад.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.