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

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

新規登録して質問してみよう
ただいま回答率
85.44%
.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

.NET Framework 4.0

Microsoft Windows用のソフトウェア開発環境/実行環境である .NET Frameworkの4番目のメジャーバージョンです。

Q&A

解決済

1回答

644閲覧

.NET 5.0を使ってリッチテキストファイルの内容をloadしたい

anchor_cable

総合スコア5

.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

.NET Framework 4.0

Microsoft Windows用のソフトウェア開発環境/実行環境である .NET Frameworkの4番目のメジャーバージョンです。

0グッド

0クリップ

投稿2022/10/20 14:45

前提

.NET framework4系を使って書かれたコードと同等の機能を持つアプリを、
.NET 5.0で実装しようと試みています。
(サポート外なのは承知しています。諸般の事情につき。。。)

実現したいこと

画像を含んだ .rtf ファイルの内容を読み込みたい。

.NET framework4系では利用可能な、RichTextBox.LoadFile() に相当する機能が、.NET 5.0にあるのが理想ですが、探し当てる事ができませんでした。

https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.richtextbox.loadfile?view=windowsdesktop-6.0&viewFallbackFrom=net-5.0#system-windows-forms-richtextbox-loadfile(system-string-system-windows-forms-richtextboxstreamtype)

発生している問題

richTextBox.LoadFile(“filepath”)

上記を実行した所、rtfファイルに含まれる文字(修飾も含む)だけが表示されました。
画像を含むファイルのため、画像まで読み込まれなければ要件を満たしません。

試したこと

.NET 5.0ではそもそも RichTextBox 自体の利用が出来ない事になっているため、いくらかキーワードを変えて代替を探しましたが、見つけられませんでした。

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

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

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

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

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

TN8001

2022/10/20 15:58

> .NET 5.0ではそもそも RichTextBox 自体の利用が出来ない事になっているため そうなんですかね? いや確かに「要求されたページは .NET 5 では使用できません。」と出たり、適用対象にも入ってはいませんが特に無くなったとも書いてない気がします。 [Windows フォームに関する破壊的変更 - .NET | Microsoft Learn](https://learn.microsoft.com/ja-jp/dotnet/core/compatibility/winforms) [.NET 5 での破壊的変更 - .NET | Microsoft Learn](https://learn.microsoft.com/ja-jp/dotnet/core/compatibility/5.0#windows-forms) 「ツールボックス」にも出ますし、(手元で作った)画像入りrtfは普通に表示されました。 「4系」とおおざっぱにおっしゃっていますが、この辺りは関係しているかもしれません。 [Windows フォームに関する破壊的変更 - .NET | Microsoft Learn](https://learn.microsoft.com/ja-jp/dotnet/core/compatibility/winforms#donotloadlatestricheditcontrol-compatibility-switch-not-supported) EnableAutoDragDropを入れて画像ファイルをドロップしたり、クリップボードから画像を張り付けたりするのはできてるんですよね? セーブしたファイルと開けないファイルを見比べると、何かわかるかもしれません。 .NET5自体がすでにサポート切れですが^^;
退会済みユーザー

退会済みユーザー

2022/10/20 22:35

検証などはしてないのでハズレかもしれませんが、試しに、NuGet パッケージ System.Drawing.Common をインストールしたらどうなりますか? もし、Windows OS の GDI+ に依存する System.Drawing 名前空間のグラフィックス機能を利用しているとすると、.NET Core / .NET では特定の OS に依存する機能は Visual Studio のテンプレートで作るプロジェクトには含まれてないようで、利用するには NuGet パッケージ System.Drawing.Common をインストールする必要があります。
vann_2921

2022/10/21 01:24 編集

プロジェクトがWindows Formsを使える設定になっていないのではないでしょうか? プロジェクトファイルにてTargetFrameworkをnet5.0-windows UseWindowsFormsをtrue にすれば使えるようにはなると思います。 Visial Studio での話ですが。 なので環境を追記して欲しいです。
退会済みユーザー

退会済みユーザー

2022/10/25 22:50

質問者さん、その後無言ですが、どうなりましたか? 「今現在実行環境が手元にないためすぐに当方で試せないのですが、環境触れ次第試させていただきます」とのことでしたが。
anchor_cable

2022/10/26 03:21

コメントくださった皆様、こちらについて続報投稿出来ておらず申し訳ございません。 問題について依然解消出来ていないままであるものの、 アプリが必要になる期限が迫っていたため、rtfファイルの使用を諦めて画像とテキストを別々に表示させるようにし回避することになりました。 問題の根本解決は試みるものの、環境に触れる時間が限られているため、再投稿までには期間が空いてしまう見込みです。 その際には改めて環境情報等追記させていただきます。
退会済みユーザー

退会済みユーザー

2022/11/03 23:47

その後どうなりましたか? いつまでも放置しておかないでクローズしてください。
guest

回答1

0

ベストアンサー

追記: System.Drawing.Common は関係なかったです。下の【追記】を見てください。

質問に対する私のコメントで、

検証などはしてないのでハズレかもしれませんが、試しに、NuGet パッケージ System.Drawing.Common をインストールしたらどうなりますか?

もし、Windows OS の GDI+ に依存する System.Drawing 名前空間のグラフィックス機能を利用しているとすると、.NET Core / .NET では特定の OS に依存する機能は Visual Studio のテンプレートで作るプロジェクトには含まれてないようで、利用するには NuGet パッケージ System.Drawing.Common をインストールする必要があります。

・・・と書きましたが、.NET 6.0 の Windows Forms アプリで検証してみました。

VS2022 のテンプレートで作った System.Drawing.Common がインストール済みの .NET 6.0 の Windows Forms アプリで、

イメージ説明

ツールボックスから RichTextBox を Form にドラッグ&ドロップして、既存の画像入り .rtf ファイルを以下のように RichTextBox1.LoadFile メソッドでロードすると、

namespace WinFormsApp2 { public partial class Form6 : Form { public Form6() { InitializeComponent(); richTextBox1.LoadFile(@"C:\Users\surfe\Documents\...\Sample.rtf"); } } }

以下のように画像も表示されます。お試しください。

イメージ説明

なお、System.Drawing.Common がインストールされてないとどうなるかまでは試してませんので、ひょっとしたら他の影響があるかも。


【追記】

上に、

System.Drawing.Common がインストールされてないとどうなるかまでは試してませんので、ひょっとしたら他の影響があるかも。

と書きましたが、System.Drawing.Common がインストールされてない Windows Forms アプリでも試してみました。問題なく画像も表示されました。

イメージ説明

なので、System.Drawing.Common は関係なかったです。他に原因があるということになりますが、質問の情報だけでは自分には分かりません。


【追記2】

ちなみに質問のコメントで vann_2921 さんが指摘されているプロジェクトファイルの内容ですが、上の【追記】のアプリでは以下の通りとなっています。

<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net6.0-windows</TargetFramework> <Nullable>enable</Nullable> <UseWindowsForms>true</UseWindowsForms> <ImplicitUsings>enable</ImplicitUsings> </PropertyGroup> </Project>

投稿2022/10/21 02:06

編集2022/10/21 02:34
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

anchor_cable

2022/10/21 03:30

色々と試していただきありがとうございます! 今現在実行環境が手元にないためすぐに当方で試せないのですが、環境触れ次第試させていただきます!
anchor_cable

2022/11/04 00:07

根本原因を調査する時間が取れず、回避策としてrtfファイルを使わないことにしていましたが、 その後も調査の時間が取れないため、クローズとさせていただきます。 コメントくださった方々には中途半端な内容となり申し訳ございません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.44%

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

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

質問する

関連した質問