• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Полскажите новичку

03.02.2024
2
0
BIT
15
Здравствуйте, в первый раз столкнулся с необходимостью написать программу на с#. Вроде во всем разобрался, но в одном куске код себя странно ведёт.
C#:
System.IO.Stream alert = assembly.GetManifestResourceStream(@"The_Guard_dog.vskrtie.wav");
    System.IO.Stream tempalert = assembly.GetManifestResourceStream(@"The_Guard_dog.tempAlert.wav");

    if ((ohrPrc == "0") & (checkBoxOhrPrc.Checked == true)) //охрана ПРЦ
    {
        labelOhrPrc.ForeColor = System.Drawing.Color.Green;
        labelOhrPrc.Text = "НОРМА";
    }

    
else if ((checkBoxOhrPrc.Checked == true) & (ohrPrc == "1"))
    {
        labelOhrPrc.ForeColor = System.Drawing.Color.Red;
        labelOhrPrc.Text = "ВСКРЫТИЕ";
        SoundPlayer player = new SoundPlayer(alert);
        player.Play();

    }
    else
    {
        labelOhrPrc.ForeColor = System.Drawing.Color.Red;
        labelOhrPrc.Text = "ВЫКЛ";
Если снимаю галочку с checkBoxOhrPrc.Checked , то надпись на лэйбле labelOhrPrc меняется на "ВЫКЛ" в соответствии с else, а звук alert продолжает играть.
При том, что ниже аналогичный код работает как задумано:
C#:
if ((Predeli.minPrc< intprc) & (intprc< Predeli.maxPrc) & (checkBoxTempPrc.Checked == true)) // слежение за temp ПРЦ
{
    textboxTempPRC.ForeColor = System.Drawing.Color.Green;
}
else if (((Predeli.minPrc >= intprc) | (intprc >= Predeli.maxPrc)) & (checkBoxTempPrc.Checked == true))
{
    textboxTempPRC.ForeColor = System.Drawing.Color.Red;
    SoundPlayer player = new SoundPlayer(tempalert);
    player.Play();

}
else
{
    textboxTempPRC.ForeColor = System.Drawing.Color.Red;
}

При снятии чекбокса, звук смолкает и надпись в текстбоксе изменяет цвет на red.
 
03.02.2024
2
0
BIT
15
Здравствуйте, в первый раз столкнулся с необходимостью написать программу на с#. Вроде во всем разобрался, но в одном куске код себя странно ведёт.
C#:
System.IO.Stream alert = assembly.GetManifestResourceStream(@"The_Guard_dog.vskrtie.wav");
    System.IO.Stream tempalert = assembly.GetManifestResourceStream(@"The_Guard_dog.tempAlert.wav");

    if ((ohrPrc == "0") & (checkBoxOhrPrc.Checked == true)) //охрана ПРЦ
    {
        labelOhrPrc.ForeColor = System.Drawing.Color.Green;
        labelOhrPrc.Text = "НОРМА";
    }

   
else if ((checkBoxOhrPrc.Checked == true) & (ohrPrc == "1"))
    {
        labelOhrPrc.ForeColor = System.Drawing.Color.Red;
        labelOhrPrc.Text = "ВСКРЫТИЕ";
        SoundPlayer player = new SoundPlayer(alert);
        player.Play();

    }
    else
    {
        labelOhrPrc.ForeColor = System.Drawing.Color.Red;
        labelOhrPrc.Text = "ВЫКЛ";
Если снимаю галочку с checkBoxOhrPrc.Checked , то надпись на лэйбле labelOhrPrc меняется на "ВЫКЛ" в соответствии с else, а звук alert продолжает играть.
При том, что ниже аналогичный код работает как задумано:
C#:
if ((Predeli.minPrc< intprc) & (intprc< Predeli.maxPrc) & (checkBoxTempPrc.Checked == true)) // слежение за temp ПРЦ
{
    textboxTempPRC.ForeColor = System.Drawing.Color.Green;
}
else if (((Predeli.minPrc >= intprc) | (intprc >= Predeli.maxPrc)) & (checkBoxTempPrc.Checked == true))
{
    textboxTempPRC.ForeColor = System.Drawing.Color.Red;
    SoundPlayer player = new SoundPlayer(tempalert);
    player.Play();

}
else
{
    textboxTempPRC.ForeColor = System.Drawing.Color.Red;
}

При снятии чекбокса, звук смолкает и надпись в текстбоксе изменяет цвет на red.
Я протупил сам, сорян. Звуковой файл был почти 30 секунд, он благополучно замолкал по окончании. Чтобы не переписывать всё добавил в else плейер.стоп
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!