FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

WPF 依存プロパティを作る

using System;
using System.Windows;

namespace Project1
{
internal static class Program
{
[STAThread]
private static void Main()
{
Window window = new Window();

//DependencyProperty.Register関数は、依存プロパティを作る関数
//第一引数はプロパティ名
//第二引数はプロパティの型
//第三引数はプロパティを所有する型
//
//(testという名前の、int型のプロパティを、Window型のインスタンスに追加する)
DependencyProperty dp = DependencyProperty.Register("test", typeof(int), typeof(Window));

//作成したプロパティを使用する
window.SetValue(dp, 300);


window.MouseDown += (sender, e) =>
{
//作成したプロパティを使用する
Console.WriteLine(window.GetValue(dp));

};

window.ShowDialog();
}
}
}
スポンサーサイト

WPF 依存プロパティの使い方

using System;
using System.Windows;

namespace Project1
{
internal static class Program
{
[STAThread]
private static void Main()
{
Window window = new Window();

//依存プロパティを使用して、値を代入
//(Nameプロパティに値を代入)
window.SetValue(Window.NameProperty, "test");


window.MouseDown += (sender, e) =>
{
//Nameプロパティで値を取得
Console.WriteLine(window.Name);
//依存プロパティを使用して、値を取得
Console.WriteLine(window.GetValue(Window.NameProperty));
};

window.ShowDialog();
}
}
}

WPF 子要素を文字列で検索

using System;
using System.Windows;
using System.Windows.Controls;

namespace Project1
{
internal static class Program
{
[STAThread]
private static void Main()
{
System.Windows.Window window = new Window();
System.Windows.Controls.Canvas canvas = new Canvas();

//Nameプロパティで、コントロールに名前をつける
canvas.Name = "test_canvas";
window.Content = canvas;


//LogicalTreeHelper.FindLogicalNode関数はコントロール内の子要素を、
//文字列で検索する関数
//
//第1引数は、親要素のコントロール
//第2引数は、Nameプロパティで指定された子要素の名前
Console.WriteLine(LogicalTreeHelper.FindLogicalNode(window, "test_canvas"));

}
}
}

WPF ウィンドウハンドルを取得2

using System;
using System.Windows;
using System.Windows.Interop;
using System.Windows.Controls;

namespace Project1
{
internal static class Program
{
[STAThread]
private static void Main()
{
System.Windows.Window window = new Window();
System.Windows.Controls.Canvas canvas = new Canvas();

window.Loaded += (sender, e) =>
{
//ウィンドウハンドルを取得するためのオブジェクトを作成
//Handleプロパティでウィンドウハンドルを取得
System.Windows.Interop.HwndSource hwnd = HwndSource.FromVisual(window) as HwndSource;

Console.WriteLine("Windowのハンドル " + hwnd.Handle);

hwnd = HwndSource.FromVisual(canvas) as HwndSource;

Console.WriteLine("Canvasのハンドル " + hwnd.Handle);

};

window.Content = canvas;
window.ShowDialog();
}
}
}

WPF ウィンドウハンドルを取得

using System;
using System.Windows;
using System.Windows.Interop;

namespace Project1
{
internal static class Program
{
[STAThread]
private static void Main()
{
System.Windows.Window window = new Window();
//ウィンドウハンドルを取得するためのオブジェクトを作成
//Handleプロパティでウィンドウハンドルを取得
System.Windows.Interop.WindowInteropHelper hwnd = new WindowInteropHelper(window);


Console.WriteLine("ウィンドウ作成前");
//0を出力
Console.WriteLine(hwnd.Handle);


window.Loaded += (sender, e) =>
{
Console.WriteLine("ウィンドウが作成された時");
//0以外の数値を出力
Console.WriteLine(hwnd.Handle);
};

window.ShowDialog();
}
}
}

Split関数で文字列を区切る

using System;

namespace Project1
{
internal static class Program
{
private static void Main()
{
//コンマ
const char c = ',';
//文字列
const string str = "0,20,100,1230,1,90";

//string.Split関数は、指定した文字で、
//文字列を区切る関数
//戻り値は文字列の配列
string[] ary = str.Split(c);

for (int i = 0; i < ary.Length; i++)
{
Console.WriteLine(ary[i]);
}

}
}
}

SharpDX インスタンスの読み込み(Load)

using System;
using System.IO;
using SharpDX;
using SharpDX.Serialization;

namespace Project1
{
internal static class Program
{
private static void Main()
{
//ファイルの読込
using (FileStream fs = new FileStream("test.txt", FileMode.Open))
//データの読込用オブジェクトを作成
using (BinarySerializer bs = new BinarySerializer(fs, SerializerMode.Read))
{
//データの読込
TestClass test = bs.Load();


//読み込んだデータの確認
Console.WriteLine(test.Name);
Console.WriteLine(test.Num);
}
}
}

//IDataSerializableインタフェースの実装は必須です
public sealed class TestClass : SharpDX.Serialization.IDataSerializable
{
public int Num;
public string Name;

//IDataSerializableインタフェースの関数の実装
//ここに保存処理を記述していく
public void Serialize(BinarySerializer serializer)
{
//保存処理
serializer.Serialize(ref this.Name);
serializer.Serialize(ref this.Num);
}

}
}

SharpDX インスタンスの保存(Save)

using System;
using System.IO;
using SharpDX;
using SharpDX.Serialization;

namespace Project1
{
internal static class Program
{
private static void Main()
{
//ファイルの読込
using (FileStream fs = new FileStream("test.txt", FileMode.Open))
//データの読込用オブジェクトを作成
using (BinarySerializer bs = new BinarySerializer(fs, SerializerMode.Read))
{
//データの読込
TestClass test = bs.Load();

//読み込んだデータの確認
Console.WriteLine(test.Name);
Console.WriteLine(test.Num);
}
}
}

//IDataSerializableインタフェースの実装は必須です
public sealed class TestClass : SharpDX.Serialization.IDataSerializable
{
public int Num;
public string Name;

//IDataSerializableインタフェースの関数の実装
//ここに保存処理を記述していく
public void Serialize(BinarySerializer serializer)
{
//保存処理
serializer.Serialize(ref this.Name);
serializer.Serialize(ref this.Num);
}

}
}

SharpDX インスタンスの保存

using System;
using System.IO;
using SharpDX;
using SharpDX.Serialization;

namespace Project1
{
internal static class Program
{
private static void Main()
{
using (FileStream fs = new FileStream("test.txt", FileMode.Create))
using (BinarySerializer bs = new BinarySerializer(fs, SerializerMode.Write))
{
TestClass test = new TestClass();
test.Num = 12300;
test.Name = "test";

//保存処理
bs.RegisterDynamic(); //保存対象のクラスを指定
bs.SerializeDynamic(ref test); //保存対象のオブジェクトを指定
}
}
}

//DynamicSerializerAttribute属性は必ずつけましょう
//コンストラクタに指定する文字列は必ず4文字で、他との重複も禁止です
[SharpDX.Serialization.DynamicSerializer("test")]
//IDataSerializableインタフェースの実装は必須です
public sealed class TestClass : SharpDX.Serialization.IDataSerializable
{
public int Num;
public string Name;

//IDataSerializableインタフェースの関数の実装
//ここに保存処理を記述していく
public void Serialize(BinarySerializer serializer)
{
//保存処理
serializer.Serialize(ref this.Num);
serializer.Serialize(ref this.Name);
}
}
}

SharpDX ファイルの読み込み

using System;
using SharpDX.IO;

namespace Project1
{
internal static class Program
{
private static void Main()
{
//文字コードの指定
System.Text.Encoding encode = System.Text.Encoding.Default;

//NativeFile.ReadAllText関数はファイルを読み込む関数
//第一引数にファイル名を指定
//第二引数に文字コードを指定
string txt = NativeFile.ReadAllText("test.txt", encode);

//ファイルの中身を出力
Console.WriteLine(txt);
}
}
}
プロフィール

みにおん

Author:みにおん
c#でゲームを作る人です
web小説なども書いています

低学歴で馬鹿なのパート従業員
ですが、よろしく

相互リンク・ブロとも募集中です
コメントなどご自由にどうぞ

ホームページを見る
Twitter(個人ページ)
PIXIV(個人ページ)

○自作ゲーム一覧
ふりーむ
フリーゲーム夢幻
100%ふりげストア

・web小説
最後の時の夢

最新記事
最新コメント
月別アーカイブ
カテゴリ
ブロとも一覧
検索フォーム
ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示
リンク
アクセスランキング
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。