Здравствуйте, SergASh, Вы писали:
SAS>Можно ли как-то из C# управлять количеством знакомест, которые консоль отводит под символ табуляции?
Все решения сводятся к хакам из разряда "Обернуть Console.Out в свой TextWriter, заменять на нужное число пробелов".
Как оно будет сочетаться с SetPosition() и \b — это уже другой вопрос

Емнип оно и с стандартным табом не очень дружило.
Здравствуйте, SergASh, Вы писали:
SAS>Привет всем!
SAS>Можно ли как-то из C# управлять количеством знакомест, которые консоль отводит под символ табуляции?
Количеством пробелов можно управлять используя класс ConsoleTraceListener и изменять свойства IndentSize и IndentLevel и символ табуляции можно не использовать.
Вот небольшой примерчик:
class Program
{
static void Main(string[] args)
{
ConsoleTraceListener consoleTraceListener = new ConsoleTraceListener {IndentSize = 3};
Trace.Listeners.Add(consoleTraceListener);
Trace.WriteLine("Hello");
consoleTraceListener.IndentLevel = 2;
Trace.WriteLine("Tabbed Hello"); // No need in tab symbol.
}
}
Теоретически нет разницы между теорией и практикой, но на практике она есть
Здравствуйте, seimur, Вы писали:
S>Количеством пробелов можно управлять используя класс ConsoleTraceListener и изменять свойства IndentSize и IndentLevel и символ табуляции можно не использовать.
Как бы да, но есть нюанс
1. Лучше не портить глобальные настройки Trace и создать свой инстанс TraceSource.
2. На стандартный вывод в консоль оно никак не влияет, вопрос был про него.
3. В остальном всё хорошо, если не считать того, что идея не работает:
Trace.WriteLine("\tTabbed\tHello"); // Oops.
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, seimur, Вы писали:
S>>Количеством пробелов можно управлять используя класс ConsoleTraceListener и изменять свойства IndentSize и IndentLevel и символ табуляции можно не использовать.
S>Как бы да, но есть нюанс
S>1. Лучше не портить глобальные настройки Trace и создать свой инстанс TraceSource.
S>2. На стандартный вывод в консоль оно никак не влияет, вопрос был про него.
S>3. В остальном всё хорошо, если не считать того, что идея не работает:
S>S>Trace.WriteLine("\tTabbed\tHello"); // Oops.
S>
Если в любом месте строчки, то можно с помощью extension method
public static class StringExtensions
{
public static string TabWidth(this string @string, int tabSize)
{
string spaces = new string(' ', tabSize);
return @string.Replace("\t", spaces);
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("\tHello\tWorld!!".TabWidth(5));
}
}
Теоретически нет разницы между теорией и практикой, но на практике она есть