String.Format(), дающий "входная строка не в правильном формате"

Что я делаю неправильно здесь?

string tmp = @"
    if (UseImageFiles) {
        vCalHeader += ""<td><img onmousedown='' src= '{0}cal_fastreverse.gif' width='13px' height='9' onmouseover='changeBorder(this, 0)' onmouseout='changeBorder(this, 1)' style='border:1px solid white'></td>\n""; //Year scroller (decrease 1 year)
        calHeight += 22;
    }";

string x = "xter";
tmp = string.Format(tmp, x);

Я получаю

Строка ввода не была в правильном формате

при попытке изменить {0}. Я делаю это в С# и WinForms.

Исключение формата было необработанным
  Строка ввода не была в правильном формате

Устранение неполадок, которые я получаю:

Убедитесь, что аргументы метода находятся в правильном формате. Преобразуя строку в datetime, проанализируйте строку, чтобы удалить дату, прежде чем помещать каждую переменную в объект DateTime.

Ответ 1

string.Format() считает, что каждый '{' или '}' является частью заполнителя (например, '{0}', который вы уже используете). Вам нужно избежать каждого литерала, удвоив его.

Итак, в вашем случае:

 string tmp = @"
    if (UseImageFiles) {{
        ...
    }}";