RunningCSharp

MS系開発者による、雑多な記事。記事は所属企業とは関係のない、個人の見解です。

C#

【C#】using+IDisposableのように一応使える、try-finally

C#

例えば、下記のようなファイルを読み込む処理の場合。 using (var fs = new FileStream("example.txt", FileMode.Open)) using (var rs = new StreamReader(fs)) { string line; while ((line = rs.ReadLine()) != null) { Console.WriteLine(line); } } usi…

C#で書いたラムダ式を用いたコードをVBで書き直してみる

.netのVBを使い慣れない私が、今度はラムダ式を使ったテストコード(コンソールアプリケーション)をC#で書いた後、そのコードVBに書き直してみただけの記事です。 C# namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //…

C#で書いたイテレーターを用いたコードをVBで書き直してみる

.netのVBを使い慣れない私が、今度はイテレーターを使ったテストコード(コンソールアプリケーション)をC#で書いた後、そのコードVBに書き直してみただけの記事です。 C# namespace ConsoleApplication1 { class Program { static void Main(string[] args) {…

C#で書いたカスタム属性をVB(.net)でも書いてみる

VBを使い慣れない私が、カスタム属性クラスを適用するテストコードをC#で書いた後、そのコードVBに書き直してみただけの記事です。 C# //文字列を保持するだけの属性 public class TestAttribute : Attribute { private string val; //属性のコンストラクタ …

C#ユーザーがVBの遅延バインディングに驚いた話など

色々あって、Visual Studio 2008でVBをやっています。 触ってみた結果、多数のスタティックメソッドや「改行にアンダーバー必須」といった文法関連など色々なC#との使い勝手の違いを感じましたが、一番違いに驚いたのは下記コードの動作です。 Dim testobj A…

WPF:プロパティ値の継承(包含継承)が可能な添付プロパティ

Xamarin:Key指定なしのStyle(デフォルトのStyle)を継承する方法

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="App.MainPage" xmlns:local="clr-namespace:App"> <ContentPage.Resources> <ResourceDictionary> <Style TargetType="Button"> </resourcedictionary></contentpage.resources></contentpage>

Xamarin:PCLに埋め込みリソースとしてテキストなどのファイルを配置し、そのファイルを読み込む

PCLプロジェクトに「埋め込みリソース」としてファイルを配置し、そのファイルを読み込む例を記載します。 今回の例はxmlファイルですが、テキストでも同様の方法で読み込めます。 下記の配置のファイルを読み込む例です。 //typeofの引数には、このメソッド…

MVVM:とにかく適当なICommandを実装したい時のサンプル

サンプルプログラム作成時、INotifyPropertyChangedを手書きで実装したViewModelは作ったけれど、 「ICommandも実装しなきゃいけないの忘れてた!今からnugetでMVVM用ライブラリ落としてくるのも面倒くさいし…」 みたいな時の為の、しょうもないサンプルです…

WPF:DataGridヘッダーのクリック時にViewModel側のICommandを実行するための添付プロパティ

stackoverflow.com 上記リンクでBlendのオブジェクトの拡張を作成してTriggerをStyle内に記述する方法での解決があります。 汎用性があるものの、多くのxamlを書く必要があるため、添付プロパティでの解決方法も一応記載してみようと思いました。

WPF:DataGridの列ヘッダークリックによるソートを「昇順」→「降順」→「ソート無し」の繰り返しにカスタム

WPFのデータグリッドの標準的な列ヘッダークリックソートの動きは「昇順」→「降順」→「昇順」…の繰り返しなのですが、 これを「昇順」→「降順」→「ソート無し(データソースの並び順)」→「昇順」…の繰り返しに変更します。 DataGrid向けの添付プロパティを用…

Xamarin:PCLStorageを用いたファイル操作

Xamarinでローカルストレージのファイル操作が出来るライブラリ「PCL Storage」を扱ってみたのでメモしておきます。 まずNugetでpclstorageなどの文言で検索し、「PCL Storage」をダウンロードして使います。 下記のようなコードでファイル操作が出来ました…

Xamarin:Xamarinで添付プロパティ(Attached Property)を試す

WPFではViewのコントロールに独自の値を渡したり、独自の値の変更を契機にイベントを動かしたい時などに添付プロパティを使っていました。 Xamarinでも使えるようなので、とりあえずシンプルな実装を試してみました。 添付プロパティの実装は以下の通り。 pu…

Xamarin:Gridアイテムの間を詰める

例えばこんな感じのxamlを書いた場合、 <Grid> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Button Text="test" VerticalOptions="Fill" HorizontalOptions="Fill" /> </button></grid>

C#:補完文字列に関するTips

C#

C#4.6以降で使える補完文字列でも、改行や\をそのまま扱いたいときは@が使えます。 string test = $@"C:\test D:\test"; また、補完対象の中括弧内に関数を指定する事も可能でした。 string test1 = "test1"; string interpolation = "補完したい文字列:{fun…

WPF:配列からRadioButtonを自動生成するItemsControlを作成

タイトルの通りItemsSourceにboolとstringを持ったオブジェクトの配列を渡すことでRadioButtonを生成するコントロールのサンプルです。 サンプルはGitHubにアップしてみました。 github.com ItemsControlを継承したカスタムコントロールとなっております、利…

Xamarin:ItemsControl.ItemsSourceプロパティとバインドした配列を別スレッドから動かす

WPFでもあった問題なのですが、(async/awaitなどを用いるなどして)メインではないスレッドから、ItemsControlのItemsSourceプロパティにバインドしたObservableCollectionに操作を行おうとするとエラーとなります。 (上記エラーはUWPプロジェクト、Windows8.…

Xamarin+Azure:Mobile Apps Quickstart templateを使ってAzure Mobile Appを作成した話

埼玉・春日部で開催された「JXUG Xamarin もくもく会」に参加してきました。 ytabuchi.hatenablog.com 上記企画のTシャツがほしいからと、 ytabuchi.hatenablog.com 上記のリンクの通りにAzureのアプリケーションを作り、Xamarinで動くサンプルをダウンロー…

C#+XAML:MVVM Light Toolkitの.net Framework4.5(C#5)以上用カスタムスニペット(Setメソッドを利用するプロパティ用)

前回の記事では.net4.5向けのmvvminpcスニペットを作成しましたが、 Setメソッド(プロパティ変更+変更通知を行うViewModelBaseのメソッド)を用いたプロパティ用スニペットについても.net4.5用のオーバーライドに対応したものがなさそうだったため、作り方を…

C#+XAML:MVVM Light Toolkitの.net Framework4.5(C#5)以上用カスタムスニペット(プロパティ用)

MVVMLight Toolkit純正のスニペット(mvvminpcやmvvminpclambdaなど)では、文字列かラムダ式でプロパティ名を渡しています。 しかし、.net4.5(C#5)ではnameof演算子を使い、メソッド側で呼び元のプロパティ名を取得できるため、実際のところ呼び出し時にプロ…

C#+XAML:MVVM Light Toolkitのスニペット導入方法など

スニペットのDLと配置(Visual Studio 2015の場合) 1:http://mvvmlight.codeplex.com/sourcecontrol/latestの「Download」リンクから、圧縮された全ソースコードをダウンロード 2:ファイルを解凍し、\Installer\InstallItems\Snippets\CSharp にスニペッ…

C#:継承とメソッドの隠蔽で、privateスコープからのアクセス時のみメソッド実装を変える

C#

基底クラスのpublicなメソッドに対し、派生クラスでnewキーワードを用いてprivateなメソッドとして隠蔽を行なうと、 クラス外から呼び出した場合(publicなスコープでのアクセス時)は基底クラスの実装で動作し、 クラス内から呼び出した場合(privateなスコ…

WPF:TreeViewのExpanderをStyleの変更をせずに非表示にする

WPF:TextBoxで連続入力中の入力エラーを抑制

C#:式木で四則演算を行うデリゲートを生成

C#

とりあえず式木を使ってみたい、位の気持ちで記事にしてしまいました。 引数と定数「2」とで四則演算を行うメソッドを生成するメソッドです。 enum CalcType { Add, Subtract, Multiply, Divide } static Func<int, int> CreateExpression2(CalcType type) { var param</int,>…

C#:refの引数を含むデリゲートに入れるラムダ式では型を省略できない話

C#

文法に関する細かいメモ。 delegate void myDelegate(ref int test); static void Main(string[] args) { myDelegate del = (ref i) => i++; } 上記のコードは構文エラーが出てしまいます。 引数にrefがある場合は、型を省略できないようです。 static void …

C#:キャプチャした変数が解放されないパターンについて

C#

class Program { static void Main(string[] args) { localMethod(); MyAction(); GC.Collect(); GC.WaitForPendingFinalizers(); Console.ReadLine(); } private static void localMethod() { MyClass myClass = new MyClass(); MyAction += () => { //ラム…

WPF:コントロールの脇にContextMenuを表示する

コントロールに沿う感じでコンテキストメニューを表示しようとしたところ、少しはまってしまった為メモ。 図のように、ボタンに沿う形でコンテキストメニューを出したかった。 コードは下記のとおり。

C#:基底クラスのプロパティ情報をリフレクションで取得する拡張メソッド

C#

/// <summary> /// 基底クラス /// </summary> public class SuperClass { public SuperClass() { SuperProperty = "Super"; } private string SuperProperty { get; set; } } /// <summary> /// 派生クラス(子クラス) /// </summary> public class Sub1Class : SuperClass { } /// <summary> /// 派生クラス</summary>…

C#:unsafeでboolにintを入れてみる

C#

C#界隈で非常に有名なお方が「unsafeとかリフレクションでboolにtrue, false以外の値が入れられる」といった旨を呟かれていたのを拝見しました。 「unsafeでならintは入るかも」と思い、恐縮ながら試してみました。 class Program { static void Main(string…