2017-01-22 23 views
1

umgewandelt werden Ich mache eine Anwendung, um die Eigenschaften von .mp3-Dateien zu bearbeiten. Ich muss sagen, ich bin ziemlich neu im Programmieren und Stackoverflow, also könnte ich etwas sehr offensichtlich falsch machen. Bitte verzeih mir! Dies ist der Code Ich verwende:CS0029 C# 'Typ String [] kann nicht implizit in String'

private void btnApply_Click(object sender, EventArgs e) 
{ 
    var file = TagLib.File.Create(filepath); 
    if (!string.IsNullOrWhiteSpace(txtGenre.Text)) 
    { 
     file.Tag.Genres = new string[] {txtGenre.Text}; 
    } 
    if (!string.IsNullOrWhiteSpace(txtArtist.Text)) 
    { 
     file.Tag.Performers = new string[] {txtArtist.Text}; 
    } 
    if (!string.IsNullOrWhiteSpace(txtTitle.Text)) 
    { 
     file.Tag.Title = new string[] {txtTitle.Text}; 
    } 
    file.Tag.Performers = new string[] { txtArtist.Text }; 
    file.Tag.Title = txtTitle.Text; 
    file.Save(); 

    if (!ReadFile()) 
    { 
     Close(); 
    } 
} 

Das Seltsame ist für mich, dass ich nur für diesen Teil eine Fehlermeldung erhalten:

new string[] {txtTitle.Text} 
:

if (!string.IsNullOrWhiteSpace(txtTitle.Text)) 
{ 
    file.Tag.Title = new string[] {txtTitle.Text}; 
} 

Mit dieser rot unterstrichen

Was fehlt mir hier? Ich habe lange gesucht, aber ich kann einfach keine Lösungen finden. Vielen Dank im Voraus! Ich verwende übrigens auch TagLib. diese

+0

Kennen Sie den Unterschied zwischen 'string' verstehen und' string [] '? –

+0

Sie versuchen, einen 'string []' Wert in eine 'string' Variable zu setzen. 'file.Tag.Title' ist ein' string' –

+0

Sie können versuchen mit: 'file.Tag.Title = txtTitle.Text;' – Hackerman

Antwort

3

Wechsel:

file.Tag.Title = new string[] {txtTitle.Text}; 

zu:

file.Tag.Title = txtTitle.Text; 

Title Typ string ist, nicht Array von Strings (nicht string[]), aber Sie versuchen, Array zuweisen - weil es erhalten Sie Fehler . Andere Felder haben den Typ string[] (Array von Strings), deshalb erhalten Sie nur einen Fehler mit Title.

Versuchen Sie auch, Sie Wert auf Title 2 mal vergeben:

if (!string.IsNullOrWhiteSpace(txtTitle.Text)) 
{ 
    file.Tag.Title = new string[] {txtTitle.Text}; // first time 
} 
file.Tag.Performers = new string[] { txtArtist.Text }; 
file.Tag.Title = txtTitle.Text;      //second time 

Sie müssen nur einmal zugeordnet werden. Wenn Sie das zweite Mal zuweisen, weisen Sie es auch korrekt ohne Fehler zu.

Die gleiche Situation mit Performers - Sie zuweisen erstmals innerhalb if Anweisung und zweites Mal nach der letzten if.

+0

Danke, das hat die Unterstreichung entfernt, aber es funktioniert nicht wie beabsichtigt. Die Idee ist, nichts zu editieren, wenn das Textfeld leer ist. Dies funktioniert mit txt.Genre, aber nicht mit Titel oder Künstler. Ich denke, dass ich das selbst herausfinden muss. Danke trotzdem! – Luctia

+0

@Luctia, siehe bearbeitete Antwort. Löschen Sie zwei Zeilen vor 'file.Save()'. Diese Zeilen: 'file.Tag.Performers = new string [] {txtArtist.Text};' und 'file.Tag.Title = txtTitle.Text;' –

+0

Ach ja, das habe ich gerade getestet und getestet. Es funktioniert jetzt. Danke für Ihre Hilfe! – Luctia

1

Ändern Sie den Code wie folgt und versuchen

file.Tag.Title = txtTitle.Text; 
Verwandte Themen