Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82

Как воспроизвести звуковой файл

10.03.2025, 08:57. Показов 13683. Ответов 151
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, форумчане! Мне очень нравится следующая страница форума Воспроизведение звука
Хотелось бы реализовать коды, представленные на данной странице, но несколько дней пытаюсь и ничего не получается, вы не могли бы помочь в этом вопросе. Условие задачи, необходимо воспроизвести звуковой файл короткого содержания при нажатии кнопки button1, button2-временно остановить (пауза) и button3 просто остановить. Звуковые файлы (они представлены в формате и mp3 и wav подготовлены и хранятся в папке проекта в папке Files). Длина звучания звукового файла предполагается звучать 2, 3 секунды, но можно и больше. Открывать файл не обязательно, предполагается только в коде указать путь к нему…Помогите, кто может...Хотелось бы правильный рабочий код...
Вложения
Тип файла: rar zwuk.rar (1.04 Мб, 46 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.03.2025, 08:57
Ответы с готовыми решениями:

Воспроизвести звуковой файл при щелчке по кнопке
Не подскажите как можно сделать так, чтобы если нажал на кнопку button воспроизводил звуковой файл?

Как мне воспроизвести звуковой сигнал при получении сообщений через SignalR?
Пишу чат на .NET Core и SignalR Core. Мне нужно воспроизводить звуковые сигналы действий (отправка сообщений, получение сообщений). Как я...

Как воспроизвести файл *.xm
Гуглил так не чего толково и не нашел (( Добавлено через 3 часа 25 минут Можно помощи не ждать я так понел :(

151
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3461 / 2782 / 575
Регистрация: 04.09.2018
Сообщений: 8,746
Записей в блоге: 3
14.03.2025, 00:22
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от OwenGlendower Посмотреть сообщение
В оркестровую яму?
Не самый худший вариант, на самом деле. Из всех ям... ))



Добавлено через 4 минуты
kukushka3, кому-то делал для трансивера генерацию морзе-сигналов, тоже сперва многое пробовал, но лучшее решение нашел в библиотеке NAudio, там есть MIDI-синтезирование. Намного проще, чем дергать виндовый плеер.
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
14.03.2025, 07:31  [ТС]
Понял Вас wizard41, большое спасибо, постараюсь посмотреть...
0
Любитель
 Аватар для Тим70
1054 / 764 / 161
Регистрация: 27.01.2019
Сообщений: 1,543
14.03.2025, 07:47
Цитата Сообщение от wizard41 Посмотреть сообщение
Звук воспроизвести... 3 страницы форума... Угу, куда катимся... ))
Человек старается
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
14.03.2025, 09:22  [ТС]
Всем добрый день! Я обещал прислать код созданной программки, конечно она не обкатана и сыровато выглядит, но кое какие недостатки уже заметны сейчас. Небольшая справка: Данная программка может быть полезна для людей, которые хотели бы с помощью азбуки Морзе передавать какие либо стандартные сообщения в эфир с помощью трансиверов, звуковых чатов или других линий связи. Для передачи радиолюбительской связи существуют специальные коды, с помощью которых и при помощи представленной программки возможно какое либо общение. Вернёмся к нашей программке. Пока не могу понять следующее: вписываю принятый позывной или просто любую информацию появляется повтор последней буквы в слове, выход - пишу буквы слов с пробелом, повтора последней буквы не наблюдается (некий выход из ситуации). При нажатии кнопки запускается и звук и работа гифки, необходимо по окончании
проигрывания звука сделать так, чтобы индикатор приводился в состояние покоя и при запуске новой кнопки, запускался вновь (кое где выставил, но не везде, исправлю). Как только кликаю кнопку с именем PSE K(это означает "Перехожу на приём"), то индикатор выключается первым, а звук ещё звучит, надо на оборот. Хотелось бы каким то образом менять скорость передачи данных каким то плавным способом, раньше это делал фиксированным способом путём переключения заготовленных звуковых файлов и записанных с разными скоростями...Прошу не судить меня строго, хотелось бы услышать ваши мнения, замечания, предложения и т.д..
Примечание:
TextBox(ы) (выше кнопок RX CALL, RX NAME, RX QTH ) для принятого позывного, принятого имени и принятого места работы вводятся в ручную. Считывание своих данных позывного, имени, и места работы и других данных производятся с тестовых документов *.txt, расположенных в соответствующей папке (Files\cody\*.txt) и заполняются (текстовые документы) заранее перед налом работы в программе. Для работы с программкой конечно необходимо знать определённый стандарт проведения рядового QSO (рядовая связь) и зная это, с помощью соответствующих макросов достаточно производить манипуляцию кнопок , получая соответствующую определённую последовательность и результат...
Вложения
Тип файла: rar Zwuk_new.rar (408.3 Кб, 29 просмотров)
0
2410 / 1942 / 764
Регистрация: 27.07.2012
Сообщений: 5,578
14.03.2025, 11:17
Цитата Сообщение от kukushka3 Посмотреть сообщение
Прошу не судить меня строго, хотелось бы услышать ваши мнения, замечания, предложения и т.д.
Ну первое, что бросается в глаза - у вас на все кнопки один и тот же код обработки, различающийся только именем файла. Поэтому обработчик должен остаться один, а имя файла можно сохранить, например, в Tag кнопки и в обработчике его извлекать.

Цитата Сообщение от kukushka3 Посмотреть сообщение
При нажатии кнопки запускается и звук и работа гифки, необходимо по окончании
проигрывания звука сделать так, чтобы индикатор приводился в состояние покоя и при запуске новой кнопки, запускался вновь
У WindowsMediaPlayer есть событие PlayStateChanged. Можно подписаться на него и в обработчике в зависимости от события отображать гиф или пнж. Как вариант.
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
14.03.2025, 11:21  [ТС]
Большое спасибо вам за совет, постараюсь обратить на это внимание...
0
3268 / 3340 / 558
Регистрация: 17.02.2019
Сообщений: 5,246
14.03.2025, 19:52
Цитата Сообщение от kukushka3 Посмотреть сообщение
Пока не могу понять следующее: вписываю принятый позывной или просто любую информацию появляется повтор последней буквы в слове
Чёт не заметил, наверно я не знаток морзе(в школе были уроки, наверно пропустил).
Цитата Сообщение от kukushka3 Посмотреть сообщение
Как только кликаю кнопку с именем PSE K(это означает "Перехожу на приём"), то индикатор выключается первым, а звук ещё звучит, надо на оборот.
Таке у вас, пока не проиграет что уже запущено он не остановится. Надо на оборот стоп делать.

И расскажите про кнопку pause(button2) зачем она если нет продолжения.

Цитата Сообщение от kukushka3 Посмотреть сообщение
TextBox(ы) (выше кнопок RX CALL, RX NAME, RX QTH ) для принятого позывного, принятого имени и принятого места работы вводятся в ручную.
Ну и если заполнять ручками, зачем тогда при нажатии на кнопки заносится в них?
Пока вроде всё.
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
14.03.2025, 20:16  [ТС]
ДЕЛО В ТОМ, ЧТО КОГДА Я БУДУ ОТВЕЧАТЬ КОРРЕСПОНДЕНТУ, Я ОБЯЗАН ОТВЕЧАТЬ АДРЕСНО. ДОПУСТИМ НА МОЙ ВЫЗОВ ОТВЕТИЛ ОПЕРАТОР С ПОЗЫВНЫМ RA3RTR (ЭТО ТАМБОВСКАЯ ОБЛАСТЬ), ПАРАЛЛЕЛЬНО МОГУТ ВЫЗЫВАТЬ И ДРУГИЕ КОРРЕСПОНДЕНТЫ. Что бы ответить адресно, я записываю тот позывной с которым буду работать, поэтому я отвечаю RA3RTR DE UA4FFZ pse k. То есть это типовая связь и она осуществляется по регламенту согласно инструкции и т.д..

Добавлено через 12 минут
Вручную записываются имя и место работы корреспондента и во время проведения QSO есть возможность назвать его по имени, а также назвать его место работы, переданное им. Это подтверждает, что я хорошо его принимаю. После связи я должен его данные занести в журнал радиообмена и выслать по его переданным данным QSL-карточку о подтверждении нашего радиообмена. QSL- карточка - это что то вроде открытки, где я представляю свои данные, а он свои, т.е. - это и есть подтверждение того, что наша радиосвязь состоялась...

Добавлено через 3 минуты
Ну это отвлечённая тема, я думаю здесь в основном направление - программирование и это очень здорово, что есть такие чаты в которых бывают замечательные люди и которые всегда могут прийти к тебе на помощь (правда не всегда, увы)...
0
3268 / 3340 / 558
Регистрация: 17.02.2019
Сообщений: 5,246
14.03.2025, 20:26
Цитата Сообщение от kukushka3 Посмотреть сообщение
бывают замечательные люди и которые всегда могут прийти к тебе на помощь
Таке нуна понимать что и как работает, чтоб чёт делать. Я пока не могу понять, так как это от меня далеко.
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
14.03.2025, 20:26  [ТС]
Кое что изменил в программке, но это конечно не главное...
Вложения
Тип файла: rar Zwuk_new.rar (585.3 Кб, 22 просмотров)
0
 Аватар для roach1967
985 / 465 / 234
Регистрация: 27.06.2014
Сообщений: 1,039
14.03.2025, 20:43
kukushka3, ради спортивного интереса накидал генератор через NAudio (подключал в NuGet):
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
using NAudio.Wave;
using NAudio.Wave.SampleProviders;
using System;
using System.Linq;
using System.Threading;
using System.Windows.Forms;
 
namespace WindowsFormsApp17
{
    public partial class Form1 : Form
    {
        private ISampleProvider sine1Seconds;
        private readonly int lengthSignal = 100; // длительность точки
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Beeps(int duration)
        {
            int len = 0;
            switch (duration)
            {
                case 1:
                    len = lengthSignal;
                    break;
                case 2:
                    len = lengthSignal * 3;
                    break;
                default:
                    break;
            }
            sine1Seconds = new SignalGenerator()
            {
                Gain = 0.2,
                Frequency = 500,
                Type = SignalGeneratorType.Sin
            }
            .Take(TimeSpan.FromMilliseconds(len));
 
            using (WaveOutEvent wo = new WaveOutEvent())
            {
                wo.Init(sine1Seconds);
                wo.Play();
                while (wo.PlaybackState == PlaybackState.Playing)
                {
                    Thread.Sleep(1);
                }
            }
        }
 
        private void Pause()
        {
            Thread.Sleep(lengthSignal);
        }
 
        private void Button1_Click(object sender, EventArgs e)
        {
            // передаю сигнал SOS
            Beeps(1);
            Beeps(1);
            Beeps(1);
            Pause();
            Beeps(2);
            Beeps(2);
            Beeps(2);
            Pause();
            Beeps(1);
            Beeps(1);
            Beeps(1);
            Pause();
        }
    }
}
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
14.03.2025, 21:35  [ТС]
Попробуем повторить, спасибо...
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
14.03.2025, 22:00  [ТС]
И снова нашёл ошибку, вот так будет лучше...
Вложения
Тип файла: rar Zwuk_new.rar (541.3 Кб, 9 просмотров)
0
14.03.2025, 22:03

Не по теме:

kukushka3, заведите репозиторий на гитхабе или аналогичном сервисе. Тем, кто вам помогает, будет проще следить за изменениями. А вы заодно и в этом инструменте прокачаетесь, что тоже полезно.

0
 Аватар для roach1967
985 / 465 / 234
Регистрация: 27.06.2014
Сообщений: 1,039
15.03.2025, 03:37
kukushka3, вот переделал свой вариант, что бы не было блокировки приложения во время воспроизведения сигнала. Использовал NAudio. Все сообщения в файле info.txt рядом с программой.
Для работы программы достаточно оставить файлы NAudio.Core.dll, NAudio.Wasapi.dll, NAudio.WinMM.dll, info.txt.
Регулируется скорость (длительность точки в миллисекундах), частота (ограничил 300 - 3000 Гц), громкость (0 - 100%).
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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
using NAudio.CoreAudioApi;
using NAudio.Wave;
using NAudio.Wave.SampleProviders;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApp17
{
    public partial class Form1 : Form
    {
        private ISampleProvider sine1Seconds;
        private int lengthSignal = 80; // длительность точки
        private int frequency = 800; // частота, Гц
        private int volume = 50; // громкость сигнала
        private readonly Dictionary<char, string> morze;
        private readonly Dictionary<string, string> messages = new Dictionary<string, string>();
        private CancellationTokenSource _cts;
 
        public Form1()
        {
            InitializeComponent();
 
            morze = new Dictionary<char, string>()
            {
                { ' ', "3" },
                { 'A', "12" },
                { 'B', "2111" },
                { 'C', "2121" },
                { 'D', "211" },
                { 'E', "1" },
                { 'F', "1121" },
                { 'G', "221" },
                { 'H', "1111" },
                { 'I', "11" },
                { 'J', "1222" },
                { 'K', "212" },
                { 'L', "1211" },
                { 'M', "22" },
                { 'N', "21" },
                { 'O', "222" },
                { 'P', "1221" },
                { 'Q', "2212" },
                { 'R', "121" },
                { 'S', "111" },
                { 'T', "2" },
                { 'U', "112" },
                { 'V', "1112" },
                { 'W', "122" },
                { 'X', "2112" },
                { 'Y', "2122" },
                { 'Z', "2211" },
                { '1', "12222" },
                { '2', "11222" },
                { '3', "11122" },
                { '4', "11112" },
                { '5', "11111" },
                { '6', "21111" },
                { '7', "22111" },
                { '8', "22211" },
                { '9', "22221" },
                { '0', "22222" }
            };
            InitializeDate();
        }
 
        private void InitializeDate()
        {
            trackBar1.Value = lengthSignal;
            label1.Text = $"Скорость: {lengthSignal}";
            trackBar2.Value = frequency;
            label2.Text = $"Частота: {frequency}Гц";
            trackBar3.Value = volume;
            label3.Text = $"Громкость: {volume}%";
 
            string[] infostr = File.ReadAllLines("info.txt").Where(x => !string.IsNullOrEmpty(x)).ToArray();
            for (int i = 0; i < infostr.Length; i++)
            {
                string[] strs = infostr[i].Split('=');
                messages.Add(strs[0], strs[1]);
            }
 
            MMDeviceEnumerator enumer = new MMDeviceEnumerator();
            MMDeviceCollection devices = enumer.EnumerateAudioEndPoints(DataFlow.All, DeviceState.Active);
            comboBox1.Items.AddRange(devices.ToArray());
            comboBox1.SelectedIndex = 0;
        }
 
        private async Task PlayStringAsync(CancellationToken token, string str)
        {
            try
            {
                char[] txt = str.ToUpper().ToCharArray();
                for (int i = 0; i < txt.Length; i++)
                {
                    string cod = morze[txt[i]];
                    for (int j = 0; j < cod.Length; j++)
                    {
                        int len = 0;
                        switch (cod[j])
                        {
                            case '1':
                                len = lengthSignal;
                                break;
                            case '2':
                                len = lengthSignal * 3;
                                break;
                            case '3':
                                len = lengthSignal * 7;
                                break;
                            default:
                                break;
                        }
 
                        if (cod[j] == '1' || cod[j] == '2')
                        {
                            sine1Seconds = new SignalGenerator()
                            {
                                Gain = volume / 100.0,
                                Frequency = frequency,
                                Type = SignalGeneratorType.Sin
                            }
                            .Take(TimeSpan.FromMilliseconds(len));
 
                            using (WaveOutEvent wo = new WaveOutEvent())
                            {
                                wo.Init(sine1Seconds);
                                wo.Play();
                                while (wo.PlaybackState == PlaybackState.Playing)
                                {
                                    await Task.Delay(10, token);
                                }
                            }
                        }
                        else
                        {
                            await Task.Delay(len, token);
                        }
                    }
                    await Task.Delay(lengthSignal, token);
                }
                textBox7.Text = "";
                await Task.Delay(lengthSignal, token);
            }
            catch (OperationCanceledException)
            { }
        }
 
        private async void StartPlay(string str)
        {
            if (_cts != null) return;
            try
            {
                using (_cts = new CancellationTokenSource())
                {
                    await PlayStringAsync(_cts.Token, str);
                }
            }
            catch
            {
                //
            }
            _cts = null;
        }
 
        private void StopPlay()
        {
            if (_cts != null) _cts.Cancel();
        }
 
        private void TrackBar1_Scroll(object sender, EventArgs e)
        {
            lengthSignal = trackBar1.Value;
            label1.Text = $"Скорость: {lengthSignal}";
        }
 
        private void TrackBar2_Scroll(object sender, EventArgs e)
        {
            frequency = trackBar2.Value;
            label2.Text = $"Частота: {frequency}Гц";
        }
 
        private void TrackBar3_Scroll(object sender, EventArgs e)
        {
            volume = trackBar3.Value;
            label3.Text = $"Громкость: {volume}%";
        }
 
        private void Button1_Click(object sender, EventArgs e)
        {
            string par = (string)((Button)sender).Tag;
            if (par == "call") textBox1.Text = messages[par];
            if (par == "name") textBox2.Text = messages[par];
            if (par == "qth") textBox3.Text = messages[par];
            textBox7.Text = messages[par];
            StartPlay(messages[par]);
        }
 
        private void Button5_Click(object sender, EventArgs e)
        {
            StopPlay();
            textBox7.Text = "";
        }
 
        private void Button9_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(textBox4.Text))
            {
                textBox7.Text = textBox4.Text;
                StartPlay(textBox4.Text);
            }
        }
 
        private void Button10_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(textBox5.Text))
            {
                textBox7.Text = textBox5.Text;
                StartPlay(textBox5.Text);
            }
        }
 
        private void Button11_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(textBox6.Text))
            {
                textBox7.Text = textBox6.Text;
                StartPlay(textBox6.Text);
            }
        }
 
        private void Button17_Click(object sender, EventArgs e)
        {
            textBox1.Text = messages["call"];
            textBox2.Text = messages["name"];
            textBox3.Text = messages["qth"];
        }
 
        private void Button16_Click(object sender, EventArgs e)
        {
            textBox4.Text = "";
            textBox5.Text = "";
            textBox6.Text = "";
        }
 
        private void Timer1_Tick(object sender, EventArgs e)
        {
            if (comboBox1.SelectedItem != null)
            {
                MMDevice device = (MMDevice)comboBox1.SelectedItem;
                progressBar1.Value = (int)(device.AudioMeterInformation.MasterPeakValue * 100f);
            }
        }
    }
}

WindowsFormsApp17.rar
2
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
15.03.2025, 05:53  [ТС]
Это великолепно!!! Большое спасибо, это очень пригодится!!!
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
17.03.2025, 18:43  [ТС]
Добрый вечер! Это снова я. И снова обращаюсь с просьбой. Представлены два рисунка рис.1 и рис.2.
На первом рисунке я ввожу вручную данные принятого корреспондента и вписываю их обычным способом, необходимо внесённые вручную данные, кликнув по кнопке (лучше по кнопке, которая расположена ниже внесённых данных рис. 3), преобразовать в тоже самое, но чтобы буквы были написаны через пробел как на рис. 2. Здесь на форуме находил похожий вариант, но разобраться пока не могу, прошу вашей помощи , помогите... Для чего это нужно, дело в том, что если я ввожу данные без пробела, происходит дважды повторение последней буквы записанного слова и это тоже не всегда, обычно когда введено короткое слово например ALEX. Исправления положения в главном коде программы конечно приветствуется (тогда и через пробел слова писать не надо, пишу через пробел - то как вариант выхода из сложившегося положения)...С уважением Александр.
Миниатюры
Как воспроизвести звуковой файл   Как воспроизвести звуковой файл   Как воспроизвести звуковой файл  

Вложения
Тип файла: rar Zwuk_new.rar (1.31 Мб, 8 просмотров)
0
3268 / 3340 / 558
Регистрация: 17.02.2019
Сообщений: 5,246
17.03.2025, 20:17
Цитата Сообщение от kukushka3 Посмотреть сообщение
происходит дважды повторение последней буквы записанного слова
Это над RX NAME и та же кнопка?

Добавлено через 23 минуты
kukushka3, Давайте посмотрим что там у вас в кнопке 9 и если например по умолчанию включен radioButton1
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
foreach (var item in textBox3.Text)
    if (radioButton1.Checked) // РАЗ radioButton1
        MyPlayList.appendItem(mediaplayer.newMedia(Path.Combine(Application.StartupPath, $"Files1\\{item}.wav")));
    else if (radioButton2.Checked)
        MyPlayList.appendItem(mediaplayer.newMedia(Path.Combine(Application.StartupPath, $"Files2\\{item}.wav")));
foreach (var item in textBox3.Text)
    if (radioButton3.Checked)
        MyPlayList.appendItem(mediaplayer.newMedia(Path.Combine(Application.StartupPath, $"Files3\\{item}.wav")));
    else if (radioButton1.Checked) // ДВА radioButton1
        MyPlayList.appendItem(mediaplayer.newMedia(Path.Combine(Application.StartupPath, $"Files\\{item}.wav")));
foreach (var item in textBox3.Text)
    if (radioButton4.Checked)
        MyPlayList.appendItem(mediaplayer.newMedia(Path.Combine(Application.StartupPath, $"Files11\\{item}.wav")));
    else if (radioButton5.Checked)
        MyPlayList.appendItem(mediaplayer.newMedia(Path.Combine(Application.StartupPath, $"Files12\\{item}.wav")));
foreach (var item in textBox3.Text)
    if (radioButton6.Checked)
        MyPlayList.appendItem(mediaplayer.newMedia(Path.Combine(Application.StartupPath, $"Files13\\{item}.wav")));
    else if (radioButton1.Checked) // ТРИ radioButton1
        MyPlayList.appendItem(mediaplayer.newMedia(Path.Combine(Application.StartupPath, $"Files\\{item}.wav")));
строка 2; 9; 19 Итерация раз, потом вторая, потом 3. И всё это добавляете в один и тот-же MyPlayList 3 раза.
Из строки берёте файл из папки Files1 а в 9 и 19 строках уже из Files.
И так во всех кнопках.

Добавлено через 21 минуту
Это вот цикл один должен быть, а то вы просто в MyPlayList добавляете в него.
Кликните здесь для просмотра всего текста
Объявите его выше всех кнопок
C#
1
IWMPPlaylist MyPlayList = null;
В событие загрузке формы уже так.
C#
1
MyPlayList = mediaplayer.playlistCollection.newPlaylist("MyList");
Да удалите его из кнопок
C#
1
2
3
4
5
6
7
8
9
10
private void Button1_Click(object sender, EventArgs e)
{
   textBox1.Text = File.ReadAllText("Files1\\cody\\call.txt"); pictureBox1.Image = Image.FromFile(Path.Combine(Application.StartupPath, "Files1\\555.gif"));
   textBox3.Text = textBox1.Text;
   /*можно убрать var MyPlayList = mediaplayer.playlistCollection.newPlaylist("MyList");*/
   foreach (var item in textBox3.Text)
   // тут код
   mediaplayer.currentPlaylist = MyPlayList;
   mediaplayer.controls.play();
}
И да очистка MyPlayList вот так моно
C#
1
MyPlayList.clear();
0
3 / 3 / 0
Регистрация: 25.01.2021
Сообщений: 82
17.03.2025, 20:29  [ТС]
Хорошо, примерно понял вашу мысль, но почему это работает нормально без повтора последней букв у слов с разным количеством букв и цифр в слове??? UA4FFZ ИДЁТ БЕЗ ПОВТОРА, А СЛОВО ALEX C ПОВТОРОМ ПОСЛЕДНЕЙ БУКВЫ. ЭТО ЯВЛЕНИЕ НАБЛЮДАЛОСЬ И ДО ТОГО КОГДА Я ПОСТАВИЛ radiobutton. Хорошо, спасибо за направление, попытаюсь повнимательнее изучить код и поэкспериментировать...Спасибо...
Добавление: Так же попытаюсь исправить предложенный код, поэкспериментировать с ним...О результатах обязательно сообщу...

Добавлено через 6 минут
Спасибо...
0
3268 / 3340 / 558
Регистрация: 17.02.2019
Сообщений: 5,246
17.03.2025, 20:33
Цитата Сообщение от kukushka3 Посмотреть сообщение
но почему это работает нормально без повтора последней букв у слов с разным количеством букв и цифр в слове??? UA4FFZ ИДЁТ БЕЗ ПОВТОРА, А СЛОВО ALEX C ПОВТОРОМ ПОСЛЕДНЕЙ БУКВЫ. ЭТО ЯВЛЕНИЕ НАБЛЮДАЛОСЬ И ДО ТОГО КОГДА Я ПОСТАВИЛ radiobutton.
Давайте так строка у вас !!!!
C#
1
MyPlayList.appendItem(mediaplayer.newMedia(Path.Combine(Application.StartupPath, $"Files\\{item}.wav")));
О чём говорит, особенно вот $"Files\\{item}.wav". Если у вас нет такой папки Files только с цифрами.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2025, 20:33

Как воспроизвести mp3 файл
Как воспроизвести mp3 или другой звуковой файл?

Как воспроизвести mp3 файл?
Всем привет! Как воспроизвести mp3 файл?

Как воспроизвести MP3 файл по ссылке?
Здравствуйте! Имеется ссылка на mp3 файл &quot;http://sait.ru/file.mp3&quot;. Нужно сделать, что бы по нажатию на кнопку этот файл...

Как воспроизвести mp3 файл из ресурсов?
У меня в ресурсах проекта есть mp3 и я его хочу воспроизвести. Как же мне это сделать? И чтобы можно было переносить exe-шник из места в...

Как воспроизвести mp3 файл с winmm.dll
Уважаемые посетители уважаемого мною ресурса cyberforum.ru не затруднит ли Вас моя просьба оказать мне помощь? Мне необходимо с помощью...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru