winforms большой абзац - PullRequest
       5

winforms большой абзац

4 голосов
/ 25 марта 2010

Я пытаюсь отобразить абзац во всплывающей подсказке при наведении на определенную графическую рамку. Проблема в том, что всплывающая подсказка берет этот абзац и размещает его на одной строке по всему экрану. Как я могу сделать так, чтобы он занимал меньшую, более читаемую область? или, может быть, у вас есть другой метод для достижения того же, но без функции всплывающей подсказки?

Ответы [ 7 ]

9 голосов
/ 25 марта 2010

Добавьте разрывы строк в вашу строку.

string tooltip = string.Format("Here is a lot of text that I want{0}to display on multiple{0}lines.", Environment.NewLine);
6 голосов
/ 12 ноября 2012

Вам не нужно использовать код для включения \ r \ n символов.

Если щелкнуть стрелку раскрывающегося списка справа от значения свойства ToolTip, отобразится многострочное поле редактирования.

Просто нажмите Enter, чтобы создать новую строку.

6 голосов
/ 25 марта 2010

Вот что вы можете использовать:

private const int maximumSingleLineTooltipLength = 20;

private static string AddNewLinesForTooltip(string text)
{
    if (text.Length < maximumSingleLineTooltipLength)
        return text;
    int lineLength = (int)Math.Sqrt((double)text.Length) * 2;
    StringBuilder sb = new StringBuilder();
    int currentLinePosition = 0;
    for (int textIndex = 0; textIndex < text.Length; textIndex++)
    {
        // If we have reached the target line length and the next 
        // character is whitespace then begin a new line.
        if (currentLinePosition >= lineLength && 
              char.IsWhiteSpace(text[textIndex]))
        {
            sb.Append(Environment.NewLine);
            currentLinePosition = 0;
        }
        // If we have just started a new line, skip all the whitespace.
        if (currentLinePosition == 0)
            while (textIndex < text.Length && char.IsWhiteSpace(text[textIndex]))
                textIndex++;
        // Append the next character.
        if (textIndex < text.Length)
            sb.Append(text[textIndex]);

        currentLinePosition++;
    }
    return sb.ToString();
}
2 голосов
/ 02 ноября 2012

Нельзя добавить \r\n в свойство всплывающей подсказки элемента управления. Это просто не работает. Чтобы решить вашу проблему, просто добавьте всплывающую подсказку в сам код, обычно в методе InitializeComponent. И.Е .: (c #, пример winform)

this.mToolTip.SetToolTip(this.tbxControl,
    "This is the first line of the tooltip.\r\n" +
    "This is the second line of the tooltip.");
2 голосов
/ 25 марта 2010

Вы пытались вставить новые строки \n во всплывающую подсказку, чтобы она занимала несколько строк?

0 голосов
/ 18 декабря 2018

Если вы введете подсказку в элемент управления свойствами DataGridView для столбцов, и я подозреваю, что другие конструкторы элементов управления WinForms добавят в подсказку «\ r \ n», вы увидите «\\ r \\ n» в подсказке, которая отображается при запуске кода. Это связано с тем, что свойство подсказки уже является строкой, и дизайнер интерпретирует код из подсказки, введенный в окне свойств, как "\\ r \\ n". Вы можете перейти к файлу .Designer.cs, отредактировать файл вручную и заменить "\\ r \\ n" на "\ r \ n". Затем вы увидите подсказку с разрывом строки при запуске приложения. Если вы вернетесь и посмотрите на значение всплывающей подсказки в конструкторе, вы увидите подсказку без разрыва строки, но она будет там и не будет преобразована в "\\ r \\ n" дизайнером. Несмотря на комментарий, сделанный ранее, вам нужен только "\ n". "\ R" не обязательно.

0 голосов
/ 19 октября 2018

Использование новой строки сработало для меня

System.Environment.NewLine
...