C#

Encodingインスタンスの比較

C#

.NETのEncodingはクラスです。 docs.microsoft.com しかし、Encodingのインスタンス同士が比較できているような気がします。 そこで、簡単なコードで調べてみました。

Eto.Formsの安定したGUI操作(GTK対策)

これは、C# Advent Calendar 2017への投稿でもあります。24日が未投稿のままだったのでいただいちゃいました。 Eto.FormsでGUIアプリケーションを書いていると、個人的な範囲だと、Windowsだと問題ないのにLinux(GTK)だと挙動(特に初期設定)がおかしい、と…

DataContractJsonSerializerのJSON出力を改行・インデントする

C#

先日の記事の補足です。 mokake.hatenablog.com DataContractJsonSerializerでJSONを生成すると、改行なしに1行になってしまいます。機械処理上はいいのですが、やはり人が見る場合もあるので、そこは考えてほしいところ。 ちょっと調べてみたら、実は簡単に…

Eto.Formsプルダウンメニューの翻訳対応

Eto.Formsの記事を書いてきましたが、実はEto、プルダウンメニューに若干の問題があります。それは、「ファイル」メニューと「ヘルプ」メニュー。 プルダウンメニューの項目名を普通に日本語(正しくは英語以外)にすると、思わぬ結果になってしまいます。し…

C#でgettextを使う

ソフトウェアを作る時、日本語だけでOKというケースは多くはないでしょう。現代ではUnicodeが普及するなど、国際化(i18n)の基本部分は整備されてきましたが、文字列リテラルをソースに埋め込んだ状態だと、各国語対応(l10n)の手間が膨大になってしまいま…

DataContractJsonSerializerの詳細動作

C#

以前、.NET標準のDataContractJsonSerializerの利用について少し書きました。 mokake.hatenablog.com このクラス、アプリケーション設定の保存や、ある種のデータの保存にも便利ですが、本格的に使おうとすると、詳細な動作が気になります。 データを格納す…

MonoのUDPは、制限ブロードキャストの受信に制約あり

C#

これも個人的な調査結果です。 Windows/.NET(4.5)とLinux(Ubuntu16.04)/Mono(4.2.1)での通信を試していたのですが、どうもうまく動作しませんでした。調べた結果、次のようなことが明らかになりました。 Linux/Monoで、IPAddress.Anyにバインドした場合、ブ…

C#でProducer-Consumerパターンのコレクションを長時間維持し、たまに生成/解除する

C#

ただの個人的な調査結果です。 C#で、次のような要求があると仮定します。 1つ以上のソース(UIなりネットワークなり)からデータが入ってくる データが入るスレッドは待たせない 入ったデータは1系列に整理(シリアライズ)され、すぐに処理(UIへの反映な…

Eto.FormsのExpanderをXAMLで

前回のExpanderについて、XAMLで書いてみます。 結果(アプリケーションの見た目や動作)は前回と似ています。

Eto.Formsで展開型パネル(Expander)

ここまでで、Eto.Formsの主要なコントロールの多くは紹介してきたつもりです。 しかし、他にも紹介していない項目もあります。 今回は、公式APIにも載っていない(入れ忘れ?)コントロールであるExpanderを紹介します。

Eto.FormsでTreeGridView

さて、Eto.Formsの紹介もかなり進んできました。あとは表とツリーあたりでしょうか。 しかし、表(GridView)については公式サンプルで十分かと思います。 なので、表は割愛してツリーについて紹介します。 Eto.Formsには、ツリー型のコントロールが2つあり…

Eto.Formsで設定ダイアログ(2)―少し凝った設定ダイアログを作る

少し凝った設定ダイアログを作る 今回は、もう少し要素の多い設定ダイアログを作ってみます。 作るもの メインウインドウは、文字列を表示するものとします。 (サンプル画像) Fileメニューから、Preferences...を選ぶと、設定ダイアログ。 次の設定ができ…

Eto.Formsで設定ダイアログ

今回は、モーダルダイアログを作ってみます。 メインウインドウは、TextAreaが1つあるだけ 設定ダイアログは、メニューから開く 設定項目は、TextAreaの中身(文字列) メイン側ではTextAreaはReadOnly=trueとして変更は禁止 作るもの メインウインドウと、…

Eto.FormsでWebブラウザ

Eto.FormsはWebViewクラスでWebブラウザの利用が可能です。 では、さっそく簡単なサンプルを。 こんな感じです。

Eto.FormsのXAMLでCommandをバインド

前回はXAMLで値をバインドしましたが、Vを起点に処理するためには、コマンドが不可欠です。現在のEto.Formsでも、ある程度のコマンドを扱うことができます。 サンプルプロジェクトを作成してみます。元ネタはXamarinのコマンドの説明です。 「イベントをコマ…

Eto.FormsでXAMLとデータバインドを使う

Eto.Formsのテンプレートでは、GUI定義の方法として次の3つを用意しています。 ソースコード(code) XAML JSON ここでは、XAMLでデータバインドを使う例を示します。 まず、テンプレートに基づいてプロジェクトを作成します。もちろんGUI定義は「XAML」を選…

Eto.Formsでアプリケーションのアイコンを設定する

Eto.FormsのForm(正確には親のWindow)クラスには、Iconプロパティがあります。ここにアイコンを設定すると、例えばWindowsならウインドウ左上やタスクバー上に表示されます。 ここでは、サンプルとして、Alessandro Rei氏のGPLなアイコンセット「Dark Glas…

Eto.Formsで画像表示

今回は画像を表示してみます。Eto.Formsで画像を表示する主なクラスは、「Image」がつくクラスとDrawableクラスです。 Image~:画像表示のみ(画像であるImageインスタンス上では、ピクセル単位の色設定が可能) Drawable:Graphicsインスタンスを取得する…

Eto.Formsでメモ帳のようなもの

GUIプログラミングといえばテキストエディタ(と個人的には思っているのです)。ということで、Eto.Formsでも簡単なサンプルを作ってみます。 できあがりは次のような感じです。

Eto.Formsでボタンと1行テキストボックス

テンプレートのHello Worldはラベルを使っていたので、今度は他の基本のコントロールとしてボタンと1行テキストを使ってみます。 前回と同様、Eto Applicationプロジェクトを作成しますが、今回は、MainForm.csを大幅に書き換えてみます。 using System; usi…

クロスプラットフォームなGUIフレームワーク「Eto.Forms」の紹介

この記事は、C# Advent Calendarの最終日(12月25日)の項目です。なお前日は smbkrysk14 さんの「Material Design In XAML ToolkitでWPFアプリにモダンなUIを!」でした。C#のアドベントカレンダーで2日連続でクライアントGUI関連というのは、ちょっとおも…

アプリケーションの設定の保存

C#

設定保存の基本 アプリケーション設定を保存するための手軽な手順はVisual Studioでの設定ですが、使い勝手など微妙な面もあります。 Visual Studioでアプリケーションの設定を保存する: .NET Tips: C#, VB.NET http://dobon.net/vb/dotnet/programing/myset…

C#でお手軽ハイブリッドアプリケーション (1)

C#

前書き 2015年を「プログラミング」という点で見ると、個人的には「Electronがやたら騒がれた」という印象を受けます。 qiita.com 自分でも上記など試してみましたが、「JavaScript関連だけ経験がある人がデスクトップアプリケーションを作る」ためには、お…