我想了解下面这段代码的原因( waveInStream.DataAvailable ):
Private Sub cmbRecord_Click(sender As Object, e As EventArgs)
Dim saveFileDialog As New SaveFileDialog()
saveFileDialog.Title = "Select output file:"
saveFileDialog.Filter = "WAV Files (*.wav)|*.wav"
saveFileDialog.FileName = outputFilename
If saveFileDialog.ShowDialog() = DialogResult.OK Then
outputFilename = saveFileDialog.FileName
waveInStream = New WaveIn(44100, 2)
writer = New WaveFileWriter(outputFilename, waveInStream.WaveFormat)
waveInStream.DataAvailable += New EventHandler(Of WaveInEventArgs)(AddressOf waveInStream_DataAvailable)
waveInStream.StartRecording()
' Just controling the objects on the screen.
cmbRecord.Enabled = False
cmbStop.Enabled = True
End If
End Sub
给我错误:
Error 1 'Public Event DataAvailable(sender As Object, e As NAudio.Wave.WaveInEventArgs)'
is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.
我正在使用示例HERE
将上述代码从c#转换为VB.net转换为VB的c#是:
private void cmbRecord_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Title = "Select output file:";
saveFileDialog.Filter = "WAV Files (*.wav)|*.wav";
saveFileDialog.FileName = outputFilename;
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
outputFilename = saveFileDialog.FileName;
waveInStream = new WaveIn(44100,2);
writer = new WaveFileWriter(outputFilename, waveInStream.WaveFormat);
waveInStream.DataAvailable += new EventHandler<WaveInEventArgs>(waveInStream_DataAvailable);
waveInStream.StartRecording();
// Just controling the objects on the screen.
cmbRecord.Enabled = false;
cmbStop.Enabled = true;
}
}
任何帮助都会很棒!
谢谢!
答案 0 :(得分:2)
尝试替换
waveInStream.DataAvailable += New EventHandler(Of WaveInEventArgs)(AddressOf waveInStream_DataAvailable)
与
AddHandler waveInStream.DataAvailable, AddressOf waveInStream_DataAvailable