rksoftware

Visual Studio とか C# とかが好きです

.NET

Microsoft Learn でクライアントアプリや Web アプリを学べそうなもの

(2019/03/30 時点です) コンテンツは日々増えているようなので、これを読んでいるときには状況も変化しているかもしれません。 ■ Microsoft Learn オンラインでマイクロソフトのプロダクトを無料で学べます。 2019/03/30 時点で 360 の学習内容があります。…

dotnet core のインストールされていないない環境でも動作する dotnet core アプリケーションを作る

■ 結論 ・Windows 向けにはコンソールで次のようにタイプして発行します。 >dotnet publish -c Release --self-contained true -r win-x64 ・Linux 向けには >dotnet publish -c Release --self-contained true -r linux-x64 ・mac 向けには >dotnet publish…

.NET でのディレクトリの扱い方

.NET/C# でファイルパスを扱う次のようなコードを見たことは無いでしょうか? string directory = "directory1\\directory2\\"; string filename = "filename.ext"; string combined = ""; if (directory.EndsWith("\\")) { combined = directory.Substring(…

ClosedXML で作った Excel ファイルで DioDocs を試すライブラリを作りました

先日、ClosedXML で作った Excel ファイルが DioDocs で扱えない というタイトルの記事を書きました。 この組み合わせの環境で試すたびに、変換するのも面倒なので変換するライブラリを作りました。 大分雑な処理をしていますが、とりあえず試すのには使えて…

ClosedXML で作った Excel ファイルが DioDocs で扱えない

.NET では ClodesXML というライブラリで Excel ファイルを作ることができます。 他にも .NET で Excel を扱うライブラリとして、最近注目の DioDocs があります。 DioDocs について詳しくは次の素晴らしい記事を読んでください。 このブログでも、何度か試…

.NET Core デスクトップアプリケーションで DioDocs で作った PDF 帳票を印刷する

.NET Core 3.0 で Windows デスクトップアプリ(WPF/WinForms)が .NET Core で作れるようになりました。 しかし、実際にデスクトップアプリを作る際には様々なライブラリを導入することが多いものです。その中でもいわゆる帳票出力コンポーネントは日本では非…

.NET Core デスクトップアプリケーションで PDF 帳票を画面表示する

.NET Core 3.0 で Windows デスクトップアプリ(WPF/WinForms)が .NET Core で作れるようになりました。 しかし、実際にデスクトップアプリを作る際には様々なライブラリを導入することが多いものです。その中でもいわゆる帳票出力コンポーネントは日本では非…

.NET Core デスクトップアプリケーションから DioDocs を使って帳票を PDF 出力する

.NET Core 3.0 で Windows デスクトップアプリ(WPF/WinForms)が .NET Core で作れるようになりました。 しかし、実際にデスクトップアプリを作る際には様々なライブラリを導入することが多いものです。その中でもいわゆる帳票出力コンポーネントは日本では非…

XAML Islands の MediaPlayerElement 使用時に動画の再生が始まらない (WinForms)

Windows フォームアプリケーションで XAML Islands の MediaPlayerElement を使用している場合に、AutoPlay プロパティを True に設定していても動画の再生が始まらないことがありました。 ■ 原因? MediaPlayerElement の AutoPlay プロパティのプロパティ …

XAML Islands の MapControl 使用時に InvalidComObjectException 例外 (WinForms)

Windows フォームアプリケーションで XAML Islands の MapControl を使用している場合に、 System.Runtime.InteropServices.InvalidComObjectException 基になる RCW から分割された COM オブジェクトを使うことはできません。 という例外が発生することがあ…

XAML Islands の Windows Community Toolkit でラップされたコントロール (WinForms編)

XAML Islands についての公式ドキュメントの ラップされたコントロール というセクションで 6 つのコントロールが挙げられています。 ラップされたコントロール WebView WebViewCompatible InkCanvas InkToolbar MediaPlayerElement MapControl これらのコン…

XAML Islands の Windows Community Toolkit でラップされたコントロール (WPF編)

XAML Islands についての公式ドキュメントの ラップされたコントロール というセクションで 6 つのコントロールが挙げられています。 ラップされたコントロール WebView WebViewCompatible InkCanvas InkToolbar MediaPlayerElement MapControl これらのコン…

XAML Islands でコントロールを一通り表示してみる

XAML Islands で全ての UWP コントロールは使えなさそうな雰囲気だったので、Windows.UI.Xaml.Controls 名前空間のそれらしいクラスを画面に配置してみました。 UWP のコントロールは 100 以上あるらしく全ては把握押していないので画面に配置してエラーにな…

XAML Islands で InitializeForCurrentThread メソッドが必要なパターン

以前に XAML Islands で UWP のコントロールを生成する場合、その前に global::Windows.UI.Xaml.Hosting.WindowsXamlManager.InitializeForCurrentThread(); の一文が必要らしいけれど、実際書かなくても大丈夫だったと書きました。 今回この一文を書く必要…

XAML Islands で表示スケールに対応する

WPF で XAML Islands を使う際に表示スケールがまだサポートされていないことを以前書きました。 まだサポートされていないと言われているのでそれまで。サポートを待てばよいのですがどうにも辛抱たまらんので頑張ってみました。 ■ 表示スケール ハードウェ…

WPF や Windows フォームアプリケーションで最新機能に対応する XAML Islands (目次)

Windows 10 October Update (Version 1809) で XAML Islands という機能が使えるようになりました。Windows 10 の UI コントロール (UWP のコントロール) が WPF や Windows Forms アプリケーションで使える夢の機能です。 詳細は公式ドキュメントへ XAML Is…

.NET Core 3.0 でデスクトップアプリを作る (目次)

.NET Core はバージョン 3.0 の新機能として Windows デスクトップ アプリケーションをサポートします。まだ Preview ではありますが、ビルドして実行できます。 この記事は、いくつか実際に試してみた記事の目次です。 ■ 2018年10月頃 この頃に .NET Core 3…

XAML Islands の使用時に表示が思い通りにならなかった件について

先日、WPF アプリケーションでの XAML Islands を試す記事を書きました。 その中で、レイアウトが思った通りに表示されないという場面がありました。 期待した表示 実際の表示 ■ 再現方法 Windows の表示スケールを変更します。 期待した表示 はスケール100%…

もう一つの XAML 諸島のコントロールの設定方法 (WPF編)

先日、WPF アプリケーションでの XAML Islands を試す記事を書きました。 しかしこの方法だと、使う UWP のエレメント名を文字列で指定せねばならず、プロパティも ChildChanged イベントでの設定になます。また階層化された複数のエレメントを配置するなど…

WPF アプリケーションで最新機能に対応する XAML Islands

Windows のバージョン 1809 で XAML Islands (MS のドキュメントの翻訳では XAML 諸島) という機能が使えるようになりました。 Windows 10 の UI コントロール (UWP のコントロール) が WPF や Windows Forms アプリケーションで使える夢の機能です。 詳細は…

もう一つの XAML 諸島のコントロールの設定方法

先日、Windows フォームアプリケーションでの XAML Islands を試す記事を書きました。 しかしこの方法だと、使う UWP のエレメント名を文字列で指定せねばならずプロパティも ChildChanged イベントでの設定になります。また階層化された複数のエレメントを…

XAML 諸島を使った際にエラーが発生する場合

XAML Islands を試している際に次の例外が出ることがありました。 Microsoft.Windows.Interop.UWPTypeFactory: Could not create type: XXXXXXXXXX 原因は、InitialTypeName の設定ミスです。 このプロパティには 使うエレメントの名前を正確に (例えば "Win…

Windows フォームアプリケーションで最新機能に対応する XAML Islands

Windows のバージョン 1809 で XAML Islands (MS のドキュメントの翻訳では XAML 諸島) という機能が使えるようになりました。 Windows 10 の UI コントロール (UWP のコントロール) が WPF や Windows Forms アプリケーションで使える夢の機能です。 詳細は…

Windows フォーム手書き時の注意 AutoScaleDimensions 設定

前回、Windows フォームアプリケーションで、Form.Designer.cs ファイルを手編集する記事を書きました。 その中で一点、良く知らなくてコメントにしてごまかした行がありました。 // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(12F, …

デザイナがなくても問題なし .NET Core 3.0 で Windows フォームアプリケーションを作る

.NET Core 3.0 で Windows フォームアプリケーションを作るには、.NET Framework と同じようにまずプロジェクト(ソリューション)を作ります。 .NET Core 3.0 用のフォームのデザイナがないことが話題ですが、大丈夫です。対策となる大きく2つの手法をこの記…

.NET Core 3.0 デスクトップアプリプロジェクトがビルドできない

.NET Core 3.0 のデスクトップアプリが次のコンパイルエラーでビルドできなくなることがあります。 重大度レベル コード 説明 プロジェクト ファイル 行 Suppression State エラー MC1003 Project file cannot specify more than one ApplicationDefinition …

.NET Core 3.0 デスクトップアプリプロジェクトが Visual Studio 2019 で開けない

.NET Core 3.0 のデスクトップアプリが Visual Studio で開けなくなることがあります。 ■ 原因 今回開けなくなった原因は、最新の Preview 版で .csproj のフォーマットが変更されたことでした。 以前の alpha バージョンの .NET Core 3.0 で作成した .cspro…

.NET Core 3.0 プロジェクトの発行でエラーになる

.NET Core 3.0 プロジェクトを Visual Studio 2019 Preview で発行をしようとすると、次のエラーが発生することがあります。 プロジェクト システムでエラーが発生しました。 ターゲット フレームワーク '.NETCoreApp,Version=v3.0' の mscorlib を解決でき…

自分用メモ - Connect(); 2018 関連リンク集

Connect(); 2018 で情報があふれるこの時期に全然情報を追えていないので、目についたリンクだけメモしておきます。 いずれちゃんと全部読む。 ・OSS として公開された WPF のリポジトリ https://github.com/dotnet/wpf ・Visual Studio 2019 Preview のペー…

プリザンターの API を扱う .NET ライブラリを書いてみました

以前に「.NET アプリからプリザンターの API を呼んでみる」記事を書きました。 前回は雑にデータ取得 API の中の一つを実装しただけでしたが、今回は一通りの API をたたけるようになっていると思います。 プロジェクトは GitHub に。 使い方 var apiClient…