Форум программистов, компьютерный форум, киберфорум
Наши страницы

C#: WPF, UWP и Silverlight

Войти
Регистрация
Восстановить пароль
 
titan4ik
103 / 81 / 13
Регистрация: 08.01.2017
Сообщений: 473
#1

Как вытащить весь текст из TextBlock? - C# WPF

17.01.2017, 23:17. Просмотров 287. Ответов 7
Метки нет (Все метки)

В приложении WPF в XAML определен TextBlock, затем в коде с# предпринята попытка показать текст из него с помощью MessageBox.Show(), но в результате показывается только первый фрагмент "Далее показан". Как показать всё?
XAML:
<TextBlock Name="tb">
Далее показан <Bold>жирный текст</Bold>, <Italic Background="#FFC3B3B3">курсивный текст</Italic>
и <Bold><Italic>жирный текст с курсивом</Italic></Bold>.
</TextBlock >

C#
1
2
3
4
5
 public MainWindow()
        {
            InitializeComponent();
            MessageBox.Show(tb.Text);         
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2017, 23:17
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как вытащить весь текст из TextBlock? (C# WPF):

Вертикальный текст в TextBlock - C# WPF
Здравствуйте! Подскажите пожалуйста как изменить направление текста в текстблоке на вертикальное?

Форматированный текст в TextBlock - C# WPF
Добрый день ув.Форумчане. Мне потребовалось сделать форматированный текст в TextBlock'е. Т.е. Часть текста в textblock'e надо сделать...

Связать текст TextBlock с объектом - C# WPF
Здравствуйте! Мне нужно связать текст TextBlock с объектом. Не знаю, как воспользоваться конструктором с параметром или каким-либо...

Не влазит текст в динамически созданые TextBlock - C# WPF
Обрезает не зависимо от количества символов . ScrollViewer VerticalScrollBarVisibility=&quot;Visible&quot; x:Name=&quot;SCR&quot; Margin=&quot;12,10,0,12&quot;...

Перевести текст, отображаемый в TextBlock в верхний регистр - C# WPF
Как сделать средствами xaml текст отображаемый в TextBlock в верхний регистр? Текст кнопки беру из БД

Binding и обычный текст внутри одного элемента TextBlock - C# WPF
Привет всем, изучаю UWP, разметка там по сути производится на XAML, и возникла ситуация: есть текстблок, который привязан к обычному полю...

7
amarf
Жуткая тВарЬ
380 / 316 / 121
Регистрация: 06.02.2015
Сообщений: 959
Записей в блоге: 1
Завершенные тесты: 3
18.01.2017, 06:45 #2
Ну наверно делать это не в конструкторе и дождаться пока окно загрузит все свои компоненты
1
titan4ik
103 / 81 / 13
Регистрация: 08.01.2017
Сообщений: 473
18.01.2017, 12:36  [ТС] #3
Не в конструкторе? Что это означает? Где это тут "в конструкторе"? И как "дождаться пока окно загрузит все компоненты"?
0
novikov.ea
750 / 672 / 185
Регистрация: 10.06.2011
Сообщений: 1,284
18.01.2017, 13:16 #4
Цитата Сообщение от titan4ik Посмотреть сообщение
Где это тут "в конструкторе"?
Конструктор - это вот:
C#
1
2
3
4
5
6
//Конструктор
public MainWindow()
{
    InitializeComponent();
    MessageBox.Show(tb.Text);         
}
Цитата Сообщение от titan4ik Посмотреть сообщение
И как "дождаться пока окно загрузит все компоненты"?
А погуглить вначале?
C#
1
2
3
4
5
6
7
8
9
class MainWindow
{
    ....
 
    protected override OnLoaded(/**/)
    {
        MessageBox.Show(tb.Text);
    }
}
2
titan4ik
103 / 81 / 13
Регистрация: 08.01.2017
Сообщений: 473
18.01.2017, 15:27  [ТС] #5
Спасибо...
То есть Main (метод, с которого начинает работу приложение) приложения WPF - это "конструктор"?
И вы определяете (переопределяете) метод OnLoaded() со странными параметрами в виде слеш и звездочек..ммм... ок попробую разобраться. А вызывается метод все-равно ведь - в "конструкторе"?
И какую книгу по этой теме правильно прочитать, чтобы не задавать подобных дурацких вопросов и не гуглить?
0
novikov.ea
750 / 672 / 185
Регистрация: 10.06.2011
Сообщений: 1,284
18.01.2017, 16:10 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от titan4ik Посмотреть сообщение
То есть Main (метод, с которого начинает работу приложение) приложения WPF - это "конструктор"?
Нет. Main - это метод, а не конструктор. Про конструкторы вот и вот. Конструктор инициализирует объект при его создании. Прочитаете в статье, это основы основ)
Цитата Сообщение от titan4ik Посмотреть сообщение
И вы определяете (переопределяете) метод OnLoaded() со странными параметрами в виде слеш и звездочек
Нет. Слэши и звёздочки - это комментарий, символизирующий, что у метода должны быть аргументы, но я не помню по памяти их количество и типы. Недолгое гугление говорит о том, что я ошибся и метода OnLoaded нет. Вместо этого нужно подписаться на событие Loaded и в обработчике производить необходимые действия:
C#
1
2
3
4
5
6
7
8
9
10
11
MainWindow()
{
    InitializeComponent();
    Loaded += MyWindow_Loaded;
}
 
private void MyWindow_Loaded(object sender, RoutedEventArgs e)
{
    Loaded -= MyWindow_Loaded;
    MessageBox.Show(tb.Text);  
}
Цитата Сообщение от titan4ik Посмотреть сообщение
И какую книгу по этой теме правильно прочитать, чтобы не задавать подобных дурацких вопросов и не гуглить?
Литература по C#
Литература по WPF
1
titan4ik
103 / 81 / 13
Регистрация: 08.01.2017
Сообщений: 473
18.01.2017, 17:54  [ТС] #7
Цитата Сообщение от novikov.ea Посмотреть сообщение
Конструктор - это вот:
C#
//Конструктор
public MainWindow()
{
InitializeComponent();
MessageBox.Show(tb.Text);
}
Вы писали "конструктор - это вот:" Так где там конструктор?
То, что метод InitializeComponent() создаёт визуальную часть из XAML (то есть, собственно окошко) это я "читал", про "конструкторы" тоже.
Ок, буду разбираться сам.
Кстати, литература по ссылкам старая довольно. Новичка напрягает, когда читаешь не про VS 2015.

Добавлено через 42 минуты
novikov.ea, информирую, что ваши рекомендации пока не помогли. Сделал вроде бы всё, как вы предложили (в исправленном варианте) и всё-равно показывает так же - первую часть текстового содержания.
???
Интересно.
0
novikov.ea
750 / 672 / 185
Регистрация: 10.06.2011
Сообщений: 1,284
18.01.2017, 18:23 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
На скороую руку код будет примерно таким
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Loaded += MyWindow_Loaded;
    }
 
    private void MyWindow_Loaded(object sender, RoutedEventArgs e)
    {
        Loaded -= MyWindow_Loaded;
        var text = GetFullText(tb);
        MessageBox.Show(text);
    }
 
    private static string GetFullText(TextBlock textBlock)
    {
        return textBlock.Inlines.Select(GetFullText)
                        .Aggregate(string.Empty, (s, s1) => s + s1);
    }
 
    private static string GetFullText(Inline inline)
    {
        var run = inline as Run;
        if (run != null)
        {
            return run.Text;
        }
 
        var span = inline as Span;
        if (span != null)
        {
            return span.Inlines.Select(GetFullText)
                        .Aggregate(string.Empty, (s, s1) => s + s1);
        }
 
        return string.Empty;
    }
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2017, 18:23
Привет! Вот еще темы с ответами:

Форматированный текст в TextBlock, TextBox, RichTextBox, какое решение будет лучше? - C# WPF
Имеется строка в виде html: &lt;font color='#d8ff00'&gt;Description: This is an item number 1.&lt;/font&gt; Мне нужно найти лучший способ что бы...

Изменить текст в TextBlock после клика на кнопке. MVVM подход. (Перевод кода с F#) - C# WPF
Хотел бы разобраться с MVVM подходом в C# на небольшом примере: Есть кнопка, по нажатию на которую, текст в TextBlock должен...

Как правильно копировать из textblock ? - C# WPF
В TextBlock в Xaml есть определенный текст. Нужно сделать кнопку, которая копирует из него текст. В моем коде выдает две ошибки: -...

Как в textbox вложить textblock? - C# WPF
как в textbox вложить textblock


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru