0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 53
1

При повторном нажатии на кнопку не срабатывает событие

04.09.2017, 21:49. Показов 3726. Ответов 35
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
добрый день товарищи! такая проблема, при запуске программы, на форме нажимаю кнопку, выходит вторая форма и в richtextbox заноситься массив строк, все нормально, потом когда вторую форму закрываю, и нажимаю на кнопку на первой форме выходит 2 форма, но richtextbox пустой

Form1
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public void button1_Click(object sender, EventArgs e)
        {
            Form2 forma = new Form2();
            
            string[] array = reader1.ReadToEnd().Split(',');
            string[] array3;
            string f=null;
            if (f == null)
            {
                for (int i = 0; i < Convert.ToInt32(array.Length); i++)
                {
                    array3 = array[i].Split('|');
                    for (int j = 0; j < Convert.ToInt32(array3.Length); j++)
                    {
 
                        f += array3[j] + Environment.NewLine;
                        Form2.m_textBox.Text = f;
                       // richTextBox2.Text += f;
                    }
                } forma.ShowDialog();
            }
Form2
C#
1
2
3
4
5
6
7
8
9
public partial class Form2 : Form
    {
        static public RichTextBox m_textBox;
 
        public Form2()
        {
            InitializeComponent();
            m_textBox = richTextBox1;
        }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.09.2017, 21:49
Ответы с готовыми решениями:

Не срабатывает SendKeys при повторном нажатии горячих клавиш
Здравствуйте, не срабатывает SendKeys при повторном нажатии горячих клавиш. Я понимаю, что дело в...

При повторном клике на кнопку не срабатывает jquery событие
Здравствуйте, специалисты. Обращаюсь за помощью. При клике на кнопку &quot;Показать&quot; появляется скрытый...

Событие при повторном нажатии на кнопку
Доброго времени суток! Прошу помощи в коде. Он создает таблицу, в которой в конце каждой строки...

DBGrid. Какое событие срабатывает при повторном нажатии на ячейку грида
Привет всем! Возник вопрос по работе с DBGrid'ом: Не могу понять, какое событие срабатывает при...

35
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
04.09.2017, 21:53 2
C#
1
reader1.ReadToEnd()
Добавлено через 50 секунд
Судя по всему, второй раз ридер не может прочитать, так как поток уже прочитан.
0
0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 53
04.09.2017, 21:56  [ТС] 3
а как его заставить прочитать снова ?
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
04.09.2017, 22:05 4
Лучший ответ Сообщение было отмечено алесандр как решение

Решение

Точно. Проверил сейчас так:
C#
1
2
3
4
5
6
7
string file = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "text.txt");
using(var fs = new FileStream(file, FileMode.Open))
using (var reader = new StreamReader(fs))
{
    string result1 = reader.ReadToEnd();
    string result2 = reader.ReadToEnd();
}
Заставить читать снова надо либо сдвигая Position на начало, либо каждый раз читать создавая ридер по новой

Добавлено через 1 минуту
Можно читать файл по новой так
C#
1
2
string file = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "text.txt");
string text = File.ReadAllText(file);
Добавлено через 2 минуты
Под сдвигом Position я подразумевал:
C#
1
2
3
string result1 = reader.ReadToEnd();
reader.BaseStream.Position = 0;
string result2 = reader.ReadToEnd();

-----------------------------------------------------------
Замени это
Добавлено через 2 минуты
C#
1
Convert.ToInt32(array.Length)
на
C#
1
array.Length
0
0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 53
05.09.2017, 11:19  [ТС] 5
спасибо! сейчас попробую

Добавлено через 8 минут
работает, спасибо!

Добавлено через 13 часов 4 минуты
привет, такая вот проблема, когда запускаю в Visual Studio все работает и меняется, когда запускаю в папке Debug\SpeechRecognition.exe потоки опять перестают считываться и работает тока один раз
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
05.09.2017, 11:23 6
алесандр, ну, я не телепат (как и остальные). Без кода можно просто поговорить тут . Возможно, что ты не перестроил проект и там старая версия эксешника. Я понятия не имею на самом деле. Ты предоставляешь слишком мало инфы.
0
Unnamed
160 / 158 / 81
Регистрация: 09.06.2011
Сообщений: 852
05.09.2017, 11:24 7
алесандр, попробуй в студии собрать решение
0
0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 53
05.09.2017, 11:29  [ТС] 8
форма 1
Кликните здесь для просмотра всего текста

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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
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 Microsoft.Speech.Recognition;
using System.IO;
 
namespace SpeechRecognition
{
    public partial class Form1 : Form
    {
        
        public Form1()
        {
            InitializeComponent();
        }
 
        //string[] lines = File.ReadAllLines(@"c:\\File.txt").ToArray();
       public static StreamReader reader = new StreamReader("c:\\File1.txt", Encoding.Default);
       public static StreamReader reader1 = new StreamReader("c:\\File.txt", Encoding.Default);
 
 
 
 
        public TextBox l;
 
        private void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            if (e.Result.Confidence > 0.7) l.Text = e.Result.Text;
        }
 
        private void Form1_Shown(object sender, EventArgs e)
        {
            l = textBox1;
 
            System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("ru-ru");
            SpeechRecognitionEngine sre = new SpeechRecognitionEngine(ci);
            sre.SetInputToDefaultAudioDevice();
 
            sre.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(sre_SpeechRecognized);
 
 
            Choices numbers = new Choices();
            numbers.Add(reader.ReadLine().Split(','));     // {"панский","матявин","николаев"});
           // reader.BaseStream.Position = 0;
 
            GrammarBuilder gb = new GrammarBuilder();
            gb.Culture = ci;
            gb.Append(numbers);
 
 
            Grammar g = new Grammar(gb);
            sre.LoadGrammar(g);
 
            sre.RecognizeAsync(RecognizeMode.Multiple);
 
            
 
 
        }
 
        private void label1_Click(object sender, EventArgs e)
        {
 
        }
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
 
 
        }
 
 
 
 
        public void button1_Click(object sender, EventArgs e)
        {
            Form2 forma = new Form2();            
            
            string[] array = reader1.ReadToEnd().Split(',');  //вносим в массив данные из файла, элементы разделены ","
           // reader1.BaseStream.Position = 0;                    //восстанавиваем считывание потока из файла
           // reader.BaseStream.Position = 0;
 
            string[] array3;
            string f=null;
            
                for (int i = 0; i < array.Length; i++)
                {
                    array3 = array[i].Split('|');
                    for (int j = 0; j < array3.Length; j++)
                    {
 
                        f += array3[j] + Environment.NewLine;
                        Form2.m_textBox.Text = f;
                       // richTextBox2.Text += f;
                    }
                } forma.ShowDialog();      
 
            
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
            
            richTextBox1.Clear();
            string[] array = reader1.ReadToEnd().Split(',');
            reader1.BaseStream.Position = 0;
           // reader.BaseStream.Position = 0;
 
        }
 
        private void textBox1_TextChanged_1(object sender, EventArgs e)
        {
           
                try
                {
                    string s = Convert.ToString(textBox1.Text);
 
                    
                    string[] array = reader1.ReadToEnd().Split(',');//вносим в массив данные из файла, элементы разделены ","
                    reader1.BaseStream.Position = 0;                //восстанавиваем считывание потока из файла
                   // reader.BaseStream.Position = 0;
                    
                    string[] array2 = new string[3];
 
                    var res = (from n in array.Distinct()
                               where n.Contains(s)                  //поиск в массиве схожий элемент
                               select n);
                    foreach (var i in res)
                        array2 = i.Split('|');
                    richTextBox1.Lines = array2;
 
 
                    
                }
                catch
                {
                }
            
 
            
 
        }
 
        
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
 
    }
}


форма 2
Кликните здесь для просмотра всего текста
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
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;
 
namespace SpeechRecognition
{
    public partial class Form2 : Form
    {
        static public RichTextBox m_textBox;
 
        public Form2()
        {
            InitializeComponent();
            m_textBox = richTextBox1;
        }
 
        public void richTextBox1_TextChanged(object sender, EventArgs e)
        {
            
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
           // Form1. array = reader1.ReadToEnd().Split(',');
            Form1.reader1.BaseStream.Position = 0;
           // Form1.reader.BaseStream.Position = 0;
            this.Close();
        }
    }
}


собирал и в release не помогает, чтото не так я делаю
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
05.09.2017, 13:14 9
алесандр, так ты же закоментировал код, который возвращает возможность чтения потока по новой
0
0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 53
05.09.2017, 13:22  [ТС] 10
я по всякому пробовал, в разных местах ставил, и на второй форме, просто код что скинул один из вариантов был, в студио работает возвращает, в ехе не хочет, тока на кнопке когда вторую форму запускаю, и потом ее закрываю, перестает работать, могу скинуть проект
0
0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 53
05.09.2017, 13:27  [ТС] 11
вот проект мой
Вложения
Тип файла: rar racuha.rar (73.3 Кб, 3 просмотров)
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
05.09.2017, 13:36 12
алесандр, слушай, а в файлах текстовых много текста планируется? Эти файлы модифицируются в процессе работы программы? Другими словами, зачем ты вообще хочешь постоянно перечитывать с них текст?

Добавлено через 33 секунды

Не по теме:

И скажу тебе по чесноку, дизайн вырвиглазный вообще. Без обид :)



Добавлено через 1 минуту
Расскажи, что ты пытаешься реализовать. С нюансами. Просто так будет легче что-то конкретное советовать.
0
0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 53
05.09.2017, 13:37  [ТС] 13
да, текст будет меняться в файле, справочник телефонов будет, и в нем будут добавляться новые и удаляться старые
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
05.09.2017, 13:38 14
Ты читаешь из файла слова, которые разделены запятыми. File1.txt - это фамилии, судя по комментарию.

Добавлено через 30 секунд
Это я написал не видев твой ответ (не обновив страницу)
0
0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 53
05.09.2017, 13:38  [ТС] 15
да, фамилии, чтоб по ним искала прога
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
05.09.2017, 13:46 16
алесандр, расскажи суть задачи. Вот пока у меня есть время я могу помочь, но сидеть до вечера задавать по вопросу в 5 - 10 минут я, к сожалению, не смогу.

Распиши подробнее. Что за файлы, один с фамилиями, второй с чем? По их названиям вообще ничего не понятно. Первое, что посоветую, всегда всё именуй понятно, ибо разобраться с этим будет сложно другим людям. В моём случае, я просто не очень хочу сидеть дебажиться и думать, что для чего, если просто ты можешь рассказать.

Добавлено через 2 минуты
Как ты видишь работу программы? Какой сценарий?

Пример:
Есть файл с фамилиями, в него вносят фамилии. Есть файл второй, в него носят номера. Фамилия с номером из файла один соотносится с номером из файла 2 по такому-то правилу.

Пользователь открыв главное окно в первую очередь открывает справочник, в котором фамилии, он что-то делает и в результате в главном окне появляется что-то.

В таком духе, чтобы из твоего описания было всё ясно сразу.
0
0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 53
05.09.2017, 13:46  [ТС] 17
там еще в чем загвоздка думаю, пытаюсь чтоб голосом работала, фамилию называешь он ее находит и выдает номер телефона, вот что интересно, когда говорю все работает, нажимаю справочник, перестает реагировать на голос, а в текстбоксе когда пишешь первые буквы фамилии он выдает номер телефона все норм,
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
05.09.2017, 13:49 18
Цитата Сообщение от алесандр Посмотреть сообщение
там еще в чем загвоздка думаю, пытаюсь чтоб голосом работала
У меня почему-то не работает вообще это дело. Я поставил SpeechPlatformRuntime, в общем, я забил на это и закомментировал просто. В референсы Microsoft.Speech я добавил. Это пока не важно.
0
0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 53
05.09.2017, 13:56  [ТС] 19
извини, щас в первом файле
Код
public static StreamReader reader = new StreamReader("c:\\File1.txt", Encoding.Default);
тока фамилии, тоесть код который отвечает за вывод по голосу в текст бокс берет их, потом когда в текстбоксе появилась фамилия, прога берет из второго файла
Код
string[] array = reader1.ReadToEnd().Split(',');
там теже фамилии, но еще добавлено служба и телефон через
Код
имя: матявин| служба: связь| телефон: 63-430,
и выдает в ричбоксе телефон и службу, при нажатии кнопки "справочник" выдает весь файл на второй форме в ричбоксе

Добавлено через 4 минуты
я установил чтоб голосом работаь можно с офциального сайта макрософт, библиотеки
Код
MicrosoftSpeechPlatformSDK.msi
Код
MSSpeech_SR_ru-RU_TELE.
Код
SpeechPlatformRuntime.msi
0
0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 53
05.09.2017, 14:02  [ТС] 20
тот проект, пробный был, вот с двумя формами, который должен быть как конечный
Вложения
Тип файла: rar racuha.rar (70.6 Кб, 2 просмотров)
0
05.09.2017, 14:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.09.2017, 14:02
Помогаю со студенческими работами здесь

Не срабатывает функция при повторном нажатии
При нажатии на кнопку СЕНД (если не заполнено поле) выводится сообщение--Внимание вы не заполнили...

Не срабатывает audio.play() при повторном нажатии (android)
Скажите пожалуйста, почему в браузерах opera и yandex на android не срабатывает audio.play() при...

Событие вызывается только при повторном нажатии.
После передачи данных, в скрипте должно открыться окно в стиле- ПИСЬМО ОТПРАЛЕНО, а сама форма...

Memo в delphi / как сделать так чтобы при нажатии на кнопку memo появляется, при повторном нажатии исчезает
как сделать так чтобы при нажатии на кнопку текст с memo появляется, при повторном нажатии исчезает...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru