Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2013, 13:26   #1
alex(21)
Форумчанин
 
Аватар для alex(21)
 
Регистрация: 09.06.2009
Сообщений: 545
Сообщение Воспроизведение звука

Здравствуйте. ситуация такая, есть две формы. на первой комбобокс с числовыми значениями, а на второй trackBar с определённым диапазоном. мне нужно воспроизводить звуковой файл (wav) до тех пор пока значения комбобокса и trackBar разные, а если они равны, то остановить воспроизведение. вот мои наработки, но не совсем корректно работает:
Код:
private void trackBar1_Scroll(object sender, EventArgs e)
        {
            textBox1.Text = Convert.ToString(trackBar1.Value);
            if (trackBar1.Value != Convert.ToInt32(form1.comboBox1.SelectedItem))
            {
                path = "C:/Documents and Settings/Admin/Рабочий стол/ИТ_лаба/umniy_dom/sounds/ko.wav";
                playSound(path);
            }
        }
private void playSound(string path)
        {
            System.Media.SoundPlayer player =
                new System.Media.SoundPlayer();
            player.SoundLocation = path;
            player.Load();
            player.Play();
            if (trackBar1.Value == Convert.ToInt32(form1.comboBox1.SelectedItem))
                player.Stop();
        }
alex(21) вне форума Ответить с цитированием
Старый 14.03.2013, 14:19   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Код:
private System.Media.SoundPlayer player = new System.Media.SoundPlayer();
private bool _isPlayingNow = false;

private void trackBar1_Scroll(object sender, EventArgs e)
        {
            textBox1.Text = Convert.ToString(trackBar1.Value);
            if (trackBar1.Value != Convert.ToInt32(form1.comboBox1.SelectedItem))
            {			    
				if (!_isPlayingNow)
				{
					_isPlayingNow = true;
					path = "C:/Documents and Settings/Admin/Рабочий стол/ИТ_лаба/umniy_dom/sounds/ko.wav";
					playSound(path);
				}
            }
			else if (_isPlayingNow)
			{
				_isPlayingNow = false;
				player.Stop();
			}
        }  
						
private void playSound(string path)
        {
            player.SoundLocation = path;
            player.Load();
            player.Play();
        }
Благодарить в репутацию. Проклинать — туда же

Последний раз редактировалось Luuzuk; 14.03.2013 в 14:22.
Luuzuk вне форума Ответить с цитированием
Старый 14.03.2013, 14:57   #3
alex(21)
Форумчанин
 
Аватар для alex(21)
 
Регистрация: 09.06.2009
Сообщений: 545
По умолчанию

Luuzuk, спасибо за вариант, но звук не останавливается. в комбобокс ставлю число 20, и после того как на трекбаре значение дошло до 20 воспроизведение не останавливается. я вот думаю может у меня с условием немного не то:
Код:
if (trackBar1.Value != Convert.ToInt32(form1.comboBox1.SelectedItem))
Цитата:
А поставить брэйкпойнт на этой строке и посмотреть значения переменных что мешает?
в принципе ничего
в этой строке SelectedItem=null, но вот почему непонятно. может из за того что комбо бокс в первой форме, а трекбар во второй и я не правильно считываю данные?

Последний раз редактировалось alex(21); 14.03.2013 в 15:36.
alex(21) вне форума Ответить с цитированием
Старый 14.03.2013, 15:13   #4
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

А поставить брэйкпойнт на этой строке и посмотреть значения переменных что мешает?
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 14.03.2013, 16:22   #5
alex(21)
Форумчанин
 
Аватар для alex(21)
 
Регистрация: 09.06.2009
Сообщений: 545
По умолчанию

получилось. вот как сделал для формы1:
Код:
public static int m;
public void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            m = Convert.ToInt32(comboBox1.SelectedItem);
        }
затем в форме2:
Код:
if (trackBar1.Value != Form1.m)
спасибо Luuzuk. вы мне очень помогли
подскажите еще пожалуйста. у меня петь к аудио будет меняться. вот путь:
Цитата:
C:/Documents and Settings/Admin/Рабочий стол/ИТ_лаба/umniy_dom/sounds/ko.wav
изменяться не будет только эта часть:
Цитата:
ИТ_лаба/umniy_dom/sounds/ko.wav
как изменить путь во избежиние проблем с перемещением?

Последний раз редактировалось alex(21); 14.03.2013 в 16:27.
alex(21) вне форума Ответить с цитированием
Старый 14.03.2013, 17:43   #6
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Поместить wav-файлы в папку с программой
А путь к файлу программы можно узнать с помощью Application.StartupPath
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Воспроизведение звука Патрон Общие вопросы Delphi 21 15.07.2008 20:08
воспроизведение звука.. Kaktys v tymane Помощь студентам 1 01.05.2008 20:55
Воспроизведение звука! Небесный Мультимедиа в Delphi 7 20.10.2007 09:48
Воспроизведение звука John_chek Общие вопросы Delphi 5 05.06.2007 15:18