Попробуйте:
i.ToString("+00;-00;+00");
Если разделить точкой с запятой (;), первый раздел будет применяться к положительным значениям, а ноль (0), второй раздел будет применяться к отрицательным значениям, третий раздел будетприменить к нулю (0).
Обратите внимание, что третий раздел может быть пропущен, если вы хотите, чтобы ноль форматировался так же, как положительные числа.Второй раздел также можно пропустить, если вы хотите, чтобы негативы отформатировались так же, как и позитивы, но вы хотите использовать другой формат для нуля.
Ссылка: MSDN Строки произвольного числового формата: «;»Разделитель секций