2017-01-22 10 views
1

Я создаю приложение для редактирования свойств файлов .mp3. Я должен сказать, что я довольно новичок в программировании и stackoverflow, поэтому я мог бы делать что-то очень явно неправильное. Пожалуйста, прости меня! Это код, я использую:CS0029 C# 'Невозможно неявно преобразовать строку типа [] в строку'

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(); 
    } 
} 

Странным мне, что я только получаю сообщение об ошибке для этой части:

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

При этом подчеркнуты красным:

new string[] {txtTitle.Text} 

Что мне здесь не хватает? Я искал очень долгое время, но я просто не могу найти решения. Заранее спасибо! Кстати, я также использую TagLib.

+0

Понимаете ли вы разницу между '' string' и строка [] '? –

+0

Вы пытаетесь поместить значение 'string []' в переменную 'string'. 'file.Tag.Title' является' string' –

+0

Вы можете попробовать: 'file.Tag.Title = txtTitle.Text;' – Hackerman

ответ

3

Изменить это:

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

к:

file.Tag.Title = txtTitle.Text; 

Title тип string, не массив строк (не string[]), но вы пытаетесь присвоить массив - из-за него вы получите сообщение об ошибке , Другие поля имеют тип string[] (массив строк), поэтому вы получаете ошибку только с Title.

Кроме того, вы пытаетесь присвоить значение Title 2 раза:

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 

Вам нужно назначить только один раз. Кроме того, когда вы назначаете второй раз, вы правильно назначаете его без ошибок.

Такая же ситуация с Performers - вы назначаете первый раз внутри if заявление и второй раз после последнего if.

+0

Спасибо, это удалило подчеркивание, но оно не работает должным образом. Идея состоит в том, чтобы ничего не редактировать, когда текстовое поле пуст. Это работает с txt.Genre, но не с заголовком или художником. Полагаю, я должен сам это понять. Спасибо, тем не менее! – Luctia

+0

@ Luctia, см. Отредактированный ответ. Удалите две строки перед 'file.Save()'. Эти строки: 'file.Tag.Performers = новая строка [] {txtArtist.Text};' и 'file.Tag.Title = txtTitle.Text;' –

+0

Ах да, я попробовал и протестировал это сейчас. Он работает сейчас. Спасибо за помощь! – Luctia

1

Измените код, как это и попробовать

file.Tag.Title = txtTitle.Text;