С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Uragan
6 / 9 / 9
Регистрация: 02.12.2009
Сообщений: 483
1

Не срабатывает событие

28.05.2011, 00:06. Просмотров 1397. Ответов 12
Метки нет (Все метки)

почему не срабатывает событие?
0
Вложения
Тип файла: 7z WindowsFormsApplication9.7z (23.2 Кб, 17 просмотров)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2011, 00:06
Ответы с готовыми решениями:

Не срабатывает событие по завершению скачивания: WebClient.DownloadStringCompleted
Вся проблема в том, что событие по завершению скачивания не срабатывает. Как не...

Какое событие срабатывает в Awesomium при нажатии на ссылку?
Здравствуйте, делаю браузер нужна помощь знающих. Использую awesonium...

Почему событие WebClient.DownloadProgressChanged() срабатывает не единожды на каждом тике загрузки
WebClient обернут в мой класс, но мне нужно узнавать прогресс загрузки файлов...

Принудительно вызвать событие, если произошло другое событие
Сразу оговорюсь, это тема про события, а НЕ про Windows Forms, да бы ни кто не...

Не срабатывает условие
Здравствуйте! У меня в коде раз через раз условие не срабатывает. Переменная...

12
NickoTin
Почетный модератор
Эксперт .NET
8451 / 3573 / 402
Регистрация: 14.06.2010
Сообщений: 4,512
Записей в блоге: 9
28.05.2011, 02:52 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Если честно, то непонятно чего ты хочешь добиться этим кодом, ну да ладно...
Событие не срабатывает потому что оно привязано на изменение свойства Mess, а в коде формы это свойство нигде не меняется. Измени метод таймера так, к примеру, и увидишь сообщения:
C#
1
2
3
4
5
6
7
8
9
10
11
12
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (mc.Items[0].SubItems[1].Text == "aaa")
            {
                mc.Mess = "0";
                mc.Items[0].SubItems[1].Text = "ggg";
            }
            else {
                mc.Mess = "1";
                mc.Items[0].SubItems[1].Text = "aaa";
            }
        }
0
Uragan
6 / 9 / 9
Регистрация: 02.12.2009
Сообщений: 483
28.05.2011, 14:42  [ТС] 3
Цитата Сообщение от SSTREGG Посмотреть сообщение
Если честно, то непонятно чего ты хочешь добиться этим кодом, ну да ладно...
хочу добиться чтобы при изменении данных во втором столбце выскакивало сообщение

Добавлено через 5 минут
мне не нужно чтобы событие срабатывало по таймеру....нужно чтобы событие сработало в момент изменения данных во втором столбце.Как это сделать?
0
Uragan
6 / 9 / 9
Регистрация: 02.12.2009
Сообщений: 483
30.05.2011, 12:26  [ТС] 4
тема актуальна
0
23Alex24
195 / 195 / 5
Регистрация: 24.07.2010
Сообщений: 1,310
30.05.2011, 14:09 5
А что трудно у textbox или combobox - где ты там хочешь? Сделать событие keypress или textchanged ?
0
Uragan
6 / 9 / 9
Регистрация: 02.12.2009
Сообщений: 483
30.05.2011, 15:51  [ТС] 6
Цитата Сообщение от 23Alex24 Посмотреть сообщение
А что трудно у textbox или combobox - где ты там хочешь? Сделать событие keypress или textchanged ?
мне нужно в listview/Ну ,уважаемые модераторы и супер модераторы вопрос висит уже давно.Если что непонятно задавайте...
0
23Alex24
195 / 195 / 5
Регистрация: 24.07.2010
Сообщений: 1,310
30.05.2011, 15:57 7
Ну и в чем проблема то? в listView нельзя просто так писать пользователям и у него есть куча событий, что именно надо сделать?
0
Uragan
6 / 9 / 9
Регистрация: 02.12.2009
Сообщений: 483
30.05.2011, 17:12  [ТС] 8
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Ну и в чем проблема то? в listView нельзя просто так писать пользователям и у него есть куча событий, что именно надо сделать?
начнём сначала...
на форме listview(мой унаследованный от listview).По таймеру срабатывает изменение во втором столбце Listview.так вот..мне нужно писать логи этого изменения(пусть в какой нибудь текстовый файл).
Вопрос:как это реализовать в моём коде
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication9
{
    public delegate void LineEventHandler(Object sender, LV e);
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        void mc_LineChanged(object sender, LV e)
        {
            if (mc.Items[0].SubItems[1].Text == "aaa")
            {
                MessageBox.Show("Success");
            }
 
            else
                MessageBox.Show("Bad");
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (mc.Items[0].SubItems[1].Text == "aaa")
            {
                mc.Items[0].SubItems[1].Text = "ggg";
            }
            else
                mc.Items[0].SubItems[1].Text = "aaa";
        }
    }
 
    public class LV : EventArgs
    {
        private string oldV, newV;
        public LV(string oldV, string newV)
        {
            this.oldV = oldV;
            this.newV = newV;
        }
        public string NewV
        {
            get { return newV; }
        }
 
        public string OldV
        {
            get { return oldV; }
        }
    }
    public class MyClass : ListView
    {
        public event LineEventHandler LineChanged;
        protected virtual void OnLineChanged(LV e)
        {
            LineChanged(this, e);
        }
        private string mess;
 
        public string Mess
        {
            get { return mess; }
            set 
            {
                string oldV = mess;
                mess = value;
                if (oldV != mess)
                {
                    OnLineChanged(new LV(oldV, mess));
                }
            }
        }
        
    }
}
Добавлено через 21 минуту
Цитата Сообщение от SSTREGG Посмотреть сообщение
Если честно, то непонятно чего ты хочешь добиться этим кодом, ну да ладно...
Событие не срабатывает потому что оно привязано на изменение свойства Mess, а в коде формы это свойство нигде не меняется. Измени метод таймера так, к примеру, и увидишь сообщения:
C#
1
2
3
4
5
6
7
8
9
10
11
12
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (mc.Items[0].SubItems[1].Text == "aaa")
            {
                mc.Mess = "0";
                mc.Items[0].SubItems[1].Text = "ggg";
            }
            else {
                mc.Mess = "1";
                mc.Items[0].SubItems[1].Text = "aaa";
            }
        }
при таком раскладе сообщение выскакивает,но останавливается таймер.Почему?
0
NickoTin
Почетный модератор
Эксперт .NET
8451 / 3573 / 402
Регистрация: 14.06.2010
Сообщений: 4,512
Записей в блоге: 9
30.05.2011, 17:33 9
Ничего не останавливается и всё записывается.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;
using System.Diagnostics;
using System.Windows.Forms;
 
namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {
        public Form1 () {
            InitializeComponent();
 
            var lvi = new ListViewItem("123");
            lvi.SubItems.Add("000");
            ipListView1.Items.Add(lvi);
 
            ipListView1.SecondSubItemTextChanged += ipListView1_SecondSubItemTextChanged;
        }
 
        void ipListView1_SecondSubItemTextChanged ( string obj ) {
            Debug.WriteLine(string.Format("Old: {0} New: {1}", ipListView1[0], obj));
        }
 
        private void timer1_Tick ( object sender, EventArgs e ) {
            if (ipListView1[0] == "aaa")
                ipListView1[0] = "ggg";
            else
                ipListView1[0] = "aaa";
        }
    }
    // Судя по предыдущим вопросам, название дал IpListView...
    public class IpListView : ListView
    {
        public event Action<string> SecondSubItemTextChanged;
 
        public string this [int index] {
            get {
                return this.Items[index].SubItems[1].Text;
            }
            set {
                if (!string.Equals(value, this.Items[index].SubItems[1].Text,
                        StringComparison.CurrentCultureIgnoreCase)) {
                    if (SecondSubItemTextChanged != null)
                        SecondSubItemTextChanged(value);
                    this.Items[index].SubItems[1].Text = value;
                }
            }
        }
    }
}
0
23Alex24
195 / 195 / 5
Регистрация: 24.07.2010
Сообщений: 1,310
31.05.2011, 06:12 10
По идее - ты же сам провоцируешь это событие и проверить было ли изменено можно, либо если изменяется точно, то можно по событию срабатывания таймера лог писать)
0
Uragan
6 / 9 / 9
Регистрация: 02.12.2009
Сообщений: 483
01.06.2011, 11:37  [ТС] 11
Цитата Сообщение от SSTREGG Посмотреть сообщение
Ничего не останавливается и всё записывается.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;
using System.Diagnostics;
using System.Windows.Forms;
 
namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {
        public Form1 () {
            InitializeComponent();
 
            var lvi = new ListViewItem("123");
            lvi.SubItems.Add("000");
            ipListView1.Items.Add(lvi);
 
            ipListView1.SecondSubItemTextChanged += ipListView1_SecondSubItemTextChanged;
        }
 
        void ipListView1_SecondSubItemTextChanged ( string obj ) {
            Debug.WriteLine(string.Format("Old: {0} New: {1}", ipListView1[0], obj));
        }
 
        private void timer1_Tick ( object sender, EventArgs e ) {
            if (ipListView1[0] == "aaa")
                ipListView1[0] = "ggg";
            else
                ipListView1[0] = "aaa";
        }
    }
    // Судя по предыдущим вопросам, название дал IpListView...
    public class IpListView : ListView
    {
        public event Action<string> SecondSubItemTextChanged;
 
        public string this [int index] {
            get {
                return this.Items[index].SubItems[1].Text;
            }
            set {
                if (!string.Equals(value, this.Items[index].SubItems[1].Text,
                        StringComparison.CurrentCultureIgnoreCase)) {
                    if (SecondSubItemTextChanged != null)
                        SecondSubItemTextChanged(value);
                    this.Items[index].SubItems[1].Text = value;
                }
            }
        }
    }
}
так ведь вы сами предоложили добавить в обработчик таймера mc.Mess="0"/ и у меня после этого таймер стоит
0
Uragan
6 / 9 / 9
Регистрация: 02.12.2009
Сообщений: 483
02.06.2011, 16:39  [ТС] 12
почему здесь не срабатывает событие
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApplication2
{
    delegate void MyDel(string str);
    class Program
    {
        
        static void Main(string[] args)
        {
            System.Threading.Timer _timer;
            SSS s = new SSS();
            s.MyEve += new MyDel(s_MyEve);
            
            _timer = new System.Threading.Timer(ddd,null,2000,2000);
           
 
        }
        public static void ddd(object o)
        {            
            Console.WriteLine("h");
            SSS d = new SSS();
 
        }
        static void s_MyEve(string str)
        {
            Console.WriteLine(str);
        }
    }
    class SSS
    {
        string str;
        public event MyDel MyEve;
        public string Str
        {
            get { return str; }
            set 
            { 
                if(value!="a")
                str = value;
                if (MyEve != null)
                {
                    MyEve("Изменилось "+this.str );
                }
            }
        }
    }
}
0
Uragan
6 / 9 / 9
Регистрация: 02.12.2009
Сообщений: 483
03.06.2011, 00:14  [ТС] 13
вроде получилось то что хотел...но есть вопрос почему в listbox увеличивается на порядок "sdf"?Хотелось бы чтобы после каждого тика "sdf" появлялся бы в количестве равном единице.
0
Вложения
Тип файла: 7z WindowsFormsApplication9.7z (27.4 Кб, 9 просмотров)
03.06.2011, 00:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2011, 00:14

Xpath не срабатывает
Здравствуйте. Есть код: using (HttpClientHandler handler = new...

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

Не срабатывает рандомизация
Приветствую Всех. В одном проекте у меня работает вот эта не сложная функция ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru