質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

1121閲覧

run.Text の文字列を折り曲げたい

yama0705

総合スコア9

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2018/07/09 05:56

編集2018/07/09 07:21

前提・実現したいこと

wpf C# で開発しています。
TextBlockのTextの一部だけ色を変更するため、TextBlockのInlineを色つきのRunに差し替えるという処理をしたところ、一部の色を変更することはできたのですが文字列が折り曲がらなくなりました。

※下記の頁を参考にしています
TextBlockのTextの一部だけ色を変更する方法
https://social.msdn.microsoft.com/Forums/ja-JP/befc82d7-df41-4be4-aa4b-061638532425/textblock12398text12398199683709612384123693339412434227932635612377?forum=wpfja

発生している問題・エラーメッセージ

run.Text の文字列が長くても折れ曲がりません。
TextBlock の TextWrapping = TextWrapping.Wrap に該当するような指定はできないでしょうか?
Run クラスには TextWrapping プロパティはありませんでした。

該当のソースコード

TextBlock tb = new TextBlock();
tb.TextWrapping = TextWrapping.Wrap;

List<Run> runs = new List<Run>();

Run run1 = new Run();
run1.Text = "黒字で出したい文字列";
runs.Add(run1);

Run run2 = new Run();
run2.Text = "赤字で出したい文字列";
run2.Foreground = new SolidColorBrush(Colors.Red);
runs.Add(run2);

//TextBlockのInlineを色つきのRunに差し替える
tb.Inlines.Clear();
tb.Inlines.AddRange(runs);

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

Visual Studio 2005

※Run について
Run クラス
https://msdn.microsoft.com/ja-jp/library/system.windows.documents.run(v=vs.110).aspx

書式設定されたか、または書式設定されていない一続きのテキストを格納するための、インライン レベルのフロー コンテンツ要素。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hihijiji

2018/07/09 07:04

Runって何ですか?
guest

回答1

0

ベストアンサー

ワードトラップはRunクラスではなく、Runが属するのTextBlockクラスにて設定すべき内容になるかと思います。

提示されたコードでTextWrappingは指定されていたので、作成されたTextBlockを表示するコードを追加して動作を確認しましたが、正常に折り返されました。

追記

表示用として、追加したコード

C#

1tb.Width = 100; 2tb.Height = 500; 3canvas1.Children.Add(tb);

XAML

1<Window x:Class="WpfApp1.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:WpfApp1" 7 mc:Ignorable="d" 8 Title="MainWindow" Height="450" Width="384.116"> 9 <Canvas Name="canvas1"> 10 </Canvas> 11</Window> 12

として
画面
このように表示されております。

投稿2018/07/09 08:16

編集2018/07/09 08:52
YAmaGNZ

総合スコア10242

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yama0705

2018/07/09 08:42

ご回答誠にありがとうございます。 ”作成されたTextBlockを表示するコード”なのですが、お手数で申し訳ありませんがどのようなコードを追加されたか教えていただけないでしょうか。 下記のように追加しているのですが折れ曲がらずにいます。 mainCanvas.Children.Add(tb);
yama0705

2018/07/09 09:06

追記ありがとうございました。 tb.Width を追加したところ折れ曲がるようになりました。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問