2017-04-11 50 views
0

我試圖播放聲音時,ListView.Items中的DateTime等於DateTime.Now。 我的代碼是:在dateView中播放聲音時dateView == dateTime.Now

public Form1() 
    { 
     InitializeComponent(); 
     listView1.View = View.Tile; 
     listView1.View = View.Details; 
     listView1.Groups.Add(pilne); 
     listView1.Groups.Add(przyszle); 
     DateTime localDate = DateTime.Now; 

     foreach (ListViewItem item in listView1.Items) 
     { 
      if (item.SubItems[2].Text == DateTime.Now.ToString("dd/MMMM/yyyy")) 
      { 
       SoundPlayer simpleSound = new SoundPlayer(@"c:\Windows\Media\Alarm01.wav"); 
       simpleSound.Play(); 
      } 
     } 
    } 

和我的第二種形式是:

public Form2() 
    { 
     InitializeComponent(); 
     dateTimePicker1.Format = DateTimePickerFormat.Custom; 
     dateTimePicker1.CustomFormat = "dd/MMMM/yyyy"; 
     dateTimePicker2.Format = DateTimePickerFormat.Time; 
     dateTimePicker2.ShowUpDown = true; 

    } 

我加入了從第二樣式的項目是這樣的:

private void btn2Zapisz_Click(object sender, EventArgs e) 
    { 
     string data2 = dateTimePicker1.Text;  //date 
     string godzina2 = dateTimePicker2.Text;  //time 
     string nazwa2 = tB2Nazwa.Text;    //name 
     string opis2 = rTB2Opis.Text;    //description 
     ListViewItem lvi = new ListViewItem(nazwa2); 
     lvi.SubItems.Add(data2); 
     lvi.SubItems.Add(godzina2); 
     lvi.SubItems.Add(opis2); 
     var dataWybrana = dateTimePicker1.Value; 
     var dataAktualna = DateTime.Now.AddDays(7); 
     string lvi2 = lvi.ToString(); 

     if (dataWybrana < dataAktualna) 
     { 
      listViewForm2.Items.Add(lvi); 
      lvi.Group = pilne2; 
     } 
     else 
     { 
      listViewForm2.Items.Add(lvi); 
      lvi.Group = przyszle2; 
     } 
     for (int i = listViewForm2.SelectedItems.Count - 1; i >= 0; i--) 
     { 
      ListViewItem itm = listViewForm2.SelectedItems[i]; 
      listViewForm2.Items[itm.Index].Remove(); 
     } 
     this.Close(); 
    } 

它不播放聲音。當lvi.SubItems.Add(data2)等於當前日期時,我想播放聲音。這段代碼有什麼錯誤?

+1

您是否測試過'item.SubItems [2] .Text == DateTime.Now.ToString(「dd/MMMM/yyyy」)'等同於真?它沒有發揮聲音或未能通過if語句? –

+0

'item.SubItems [2] .Text == DateTime.Now.ToString(「dd.MMMM.yyyy」)' 無法播放聲音 – themati91

+0

因此,if語句是否正確地返回true? –

回答

0

確保聲音播放

SoundPlayer simpleSound = new SoundPlayer(@"c:\Windows\Media\Alarm01.wav"); 
simpleSound.Load(); 
simpleSound.Play(); 

而且之前加載,你可能希望在一個應用程序作爲資源的聲音文件。然後你可以像這樣引用它。

SoundPlayer simpleSound = new SoundPlayer(Properties.Resources.Alarm01); 
simpleSound.Play(); 

這將避免不被發現,由於權限問題的聲音文件的問題,等等。

0

那麼代碼看起來很好,但播放聲音真的取決於你工作的 例如環境你正在windows服務器上做這個代碼(比如說2012),然後爲了播放你需要從控制面板啓用媒體功能/添加或刪除功能的播放聲音,或者你需要適當的訪問權限(resx會​​有幫助)。 有一定的事情,你可以

1.您可以嘗試播放生產環境中的其他音頻文件,以確保生產環境可以產生一些噪音。換句話說,確保生產環境能夠發出聲音。

2.您可以嘗試使用Windows Media Player在生產環境中播放.wav文件,以檢查.wav文件是否爲壞文件。 您可以嘗試在其他計算機上運行應用程序,例如其他臺式計算機和其他計算機與您測試的「生產環境」具有相同環境。

3.您可以嘗試在應用程序代碼中添加一些日誌信息和「try ... catch ...」語句,以檢查在生產環境中運行應用程序時是否發生了某些異常。