かずきのBlog

C#やJavaやRubyとメモ書き

目次

Blog 利用状況

ニュース

わんくまBlogが不安定になったため、前に書いてたはてなダイアリーにメインを移動します。
かずきのBlog@Hatena
技術的なネタは、こちらにも、はてなへのリンクという形で掲載しますが、雑多ネタははてなダイアリーだけに掲載することが多いと思います。
コメント
プログラマ的自己紹介
お気に入りのツール/IDE
プロフィール
経歴
広告
アクセサリ

書庫

日記カテゴリ

[WPF][C#]カスタムコントロール入門 その1

ずっと思ってた。WPFをやり始めたころからずっと。
カスタムコントロールコントロールを作りたい!!!ということでコツコツDependencyPropertyとかCommandとかやってきたのが実を結んで、ついにカスタムコントロール作成を入門してみるよ。

プロジェクトの作成

WpfMyControlという名前でプロジェクトを作成した。あえて見出しをつけるまでもないけど、はじめを大事にね。

コントロールの作成

右クリックメニューからさくっと追加。カスタムコントロール(WPF)っていうのを選ぼう。
WPFついてないのを選ぶとWindowsFormのになっちゃうので要注意。

名前はGreetControlにしてみた。コントロールを作成すると、Themes\Generic.xamlとGreetControl.csというファイルが作られる。

image

Generic.xamlは、見た目を定義するのに使います。GreetControlに、CommandやDependencyPropertyを定義する。

今回の目標

最初に書いておけって感じがしなくもないけど、今回の目標を書いておく。といあえず、テキストボックスとボタンがあって、ボタンを押すと、テキストボックスの中身がメッセージボックスで表示されるものを目指す。

見た目の作成

見た目を作っていく。見た目はGeneric.xamlにあるStyleに書いていく。最初の状態だとGeneric.xamlには、下のようなStyleが定義されている。

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfMyControl">


    <Style TargetType="{x:Type local:GreetControl}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:GreetControl}">
                    <Border Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}">
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

GreetControlをTargetTypeにして、Templateを設定するStyleが定義されているのがわかる。
ここにStackPanelを置いて、TextBoxとButtonをとりあえず置いてみた。

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfMyControl">


    <Style TargetType="{x:Type local:GreetControl}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:GreetControl}">
                    <Border Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}">
                        <StackPanel>
                            <TextBox />
                            <Button Content="Greet!!" />
                        </StackPanel>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

ちょっと見た目を弄ったので、Window1.xamlに置いてみる。namespaceを定義してWindowにぽちっと置いてみた。

<Window x:Class="WpfMyControl.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfMyControl"
    Title="Window1" Height="300" Width="300">
    <StackPanel>
        <local:GreetControl />
    </StackPanel>
</Window>

実行してみると、確かに見た目は出来てる!
image

次はプロパティを作ってみよう。とりあえず、TextBoxに入力された値を保持するためのプロパティが必要になりそう。ということでプロパティをつくってみようと思う。

プロパティの定義

プロパティは、普通に依存プロパティで作ることになる。string型のValueプロパティなので、こんな感じでいける。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfMyControl
{
    public class GreetControl : Control
    {

        #region Value 依存プロパティ
        public string Value
        {
            get { return (string)GetValue(ValueProperty); }
            set { SetValue(ValueProperty, value); }
        }

        // GreetControlのstring型のValueプロパティで、デフォルト値が空文字
        public static readonly DependencyProperty ValueProperty =
            DependencyProperty.Register(
                "Value", 
                typeof(string), 
                typeof(GreetControl), 
                new UIPropertyMetadata(""));
        #endregion

        static GreetControl()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(GreetControl), new FrameworkPropertyMetadata(typeof(GreetControl)));
        }
    }
}

usingとかが長いけど、追加したのはregion~endregionまでの間になる。これで、Window1.xamlでValueプロパティに値を設定できるようになる。

<Window x:Class="WpfMyControl.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfMyControl"
    Title="Window1" Height="300" Width="300">
    <StackPanel>
        <local:GreetControl Value="こんにちは" />
    </StackPanel>
</Window>

ビルドは通るけど、ぜんぜん動きとしては変わらない。プロパティの値を見た目に反映させるには、Generic.xamlをいじくることになる。

プロパティの値をバインドして画面に出すよ

ということでGeneric.xamlに戻って編集を再開。ValueプロパティをTextBoxにバインドして出してみようと思う。
ということでTemplateBindingでさくっとバインドをする。

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfMyControl">


    <Style TargetType="{x:Type local:GreetControl}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:GreetControl}">
                    <Border Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}">
                        <StackPanel>
                            <!-- Binding!! -->
                            <TextBox Text="{TemplateBinding Value}"/>
                            <Button Content="Greet!!" />
                        </StackPanel>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

これで実行すると、画面にWindow1.xamlで設定した「こんにちは」が表示されるようになる。
image

動きをつけよう

最後に動きをつけて完成かな。このコントロールの動きは、ボタンを押したときにポローンとメッセージボックスが出るってだけ。単純にイベントを登録するのではなく、Commandを使ってボタンのクリックを補足します。
とりあえずCommandの定義をGreetControl.csに追加。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfMyControl
{
    public class GreetControl : Control
    {

        #region Value 依存プロパティ
        public string Value
        {
            get { return (string)GetValue(ValueProperty); }
            set { SetValue(ValueProperty, value); }
        }

        // GreetControlのstring型のValueプロパティで、デフォルト値が空文字
        public static readonly DependencyProperty ValueProperty =
            DependencyProperty.Register(
                "Value", 
                typeof(string), 
                typeof(GreetControl), 
                new UIPropertyMetadata(""));
        #endregion

        #region GreetCommand
        public static ICommand GreetCommand = new RoutedCommand(
            "GreetCommand", typeof(GreetControl));
        #endregion
        static GreetControl()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(GreetControl), new FrameworkPropertyMetadata(typeof(GreetControl)));
        }
    }
}

Commandが定義できたらStaticコンストラクタにCommandBindingを追加する。Staticメソッド経由でインスタンスメソッドを呼び出してる。そこでMessageBoxの表示処理を書くって寸法。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfMyControl
{
    public class GreetControl : Control
    {

        #region Value 依存プロパティ
        public string Value
        {
            get { return (string)GetValue(ValueProperty); }
            set { SetValue(ValueProperty, value); }
        }

        // GreetControlのstring型のValueプロパティで、デフォルト値が空文字
        public static readonly DependencyProperty ValueProperty =
            DependencyProperty.Register(
                "Value", 
                typeof(string), 
                typeof(GreetControl), 
                new UIPropertyMetadata(""));
        #endregion

        #region GreetCommand
        public static ICommand GreetCommand = new RoutedCommand(
            "GreetCommand", typeof(GreetControl));
        #endregion
        static GreetControl()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(GreetControl), new FrameworkPropertyMetadata(typeof(GreetControl)));
            
            // CommandBingingを登録
            var greetCommandBinding = new CommandBinding(
                GreetCommand, OnGreetCommand);
            CommandManager.RegisterClassCommandBinding(
                typeof(GreetControl), greetCommandBinding);
        }

        #region Command
        private static void OnGreetCommand(object sender, ExecutedRoutedEventArgs e)
        {
            // senderからコントロールを取得して、インスタンスメソッドに処理を丸投げ
            var control = (GreetControl)sender;
            control.OnGreetCommand();
        }

        /// <summary>
        /// GreetCommandの処理の実体
        /// </summary>
        public void OnGreetCommand()
        {
            MessageBox.Show(this.Value);
        }
        #endregion
    }
}

そして、Generic.xamlで、ButtonとCommandを関連付ける。

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfMyControl">


    <Style TargetType="{x:Type local:GreetControl}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:GreetControl}">
                    <Border Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}">
                        <StackPanel>
                            <!-- Binding!! -->
                            <TextBox Text="{TemplateBinding Value}"/>
                            <!-- Command!! -->
                            <Button Content="Greet!!" Command="{x:Static local:GreetControl.GreetCommand}" />
                        </StackPanel>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

動作確認

ということで、実行して動作を確認してみる。実行してボタンをぽちっとすると…
image

でた~!ということで始めての、作り方は正統派のコントロールの作り方でした。

投稿日時 : 2008年8月25日 23:49

Feedback

# sac longchamp pas cher 2012/10/17 23:49 http://www.sacslongchamppascher2013.com

Utterly composed subject material, regards for selective information. "Life is God's novel. Let him write it." by Isaac Bashevis Singer.

# sac longchamp 2012/10/19 14:26 http://www.sacslongchamppascher2013.com

Its wonderful as your other content : D, appreciate it for posting . "Experience is that marvelous thing that enables you to recognize a mistake when you make it again." by Franklin P. Jones.

# cheap louis vuitton purses 2012/10/28 3:13 http://www.louisvuittonoutletbags2013.com/

No need to it's the perfect time more comfy to be with. It's the perfect time who will stress one lever tumbler for yourself " up ".
cheap louis vuitton purses http://www.louisvuittonoutletbags2013.com/

# louis vuitton shoes 2012/10/28 3:13 http://www.louisvuittonwallets2013.com/

Wear‘s debris your time and energy at the the human race/female patient,what person isn‘s ready debris their own period of time with you.
louis vuitton shoes http://www.louisvuittonwallets2013.com/

# louis vuitton outlet store 2012/10/28 3:13 http://www.louisvuittonbackpack2013.com/

I need explore caused by your identiity, although caused by who What i'm next time i morning you've made.
louis vuitton outlet store http://www.louisvuittonbackpack2013.com/

# Nike Schehe 2012/10/30 21:22 http://www.nikefree3runschuhe.com/

If you love a powerful accounting system with the truly, count number friends and family.
Nike Schehe http://www.nikefree3runschuhe.com/

# wallet 2012/11/03 1:56 http://www.burberryoutletscarfsale.com/accessories

Simply wanna input that you have a very decent web site , I like the style and design it really stands out.
wallet http://www.burberryoutletscarfsale.com/accessories/burberry-wallets-2012.html

# burberry bag 2012/11/03 1:56 http://www.burberryoutletscarfsale.com/burberry-ba

Great ? I should certainly pronounce, impressed with your web site. I had no trouble navigating through all the tabs as well as related information ended up being truly easy to do to access. I recently found what I hoped for before you know it in the least. Reasonably unusual. Is likely to appreciate it for those who add forums or anything, site theme . a tones way for your customer to communicate. Excellent task.
burberry bag http://www.burberryoutletscarfsale.com/burberry-bags.html

# burberry mens shirts 2012/11/03 1:57 http://www.burberryoutletscarfsale.com/burberry-me

I just could not go away your web site before suggesting that I actually enjoyed the usual info an individual provide on your visitors? Is gonna be again often to investigate cross-check new posts.
burberry mens shirts http://www.burberryoutletscarfsale.com/burberry-men-shirts.html

# burberry watches for women 2012/11/03 1:57 http://www.burberryoutletscarfsale.com/accessories

Its excellent as your other posts : D, regards for posting . "So, rather than appear foolish afterward, I renounce seeming clever now." by William of Baskerville.
burberry watches for women http://www.burberryoutletscarfsale.com/accessories/burberry-watches.html

# women t shirts 2012/11/03 1:57 http://www.burberryoutletscarfsale.com/burberry-wo

I gotta bookmark this internet site it seems very useful very useful
women t shirts http://www.burberryoutletscarfsale.com/burberry-womens-shirts.html

# burberry sale 2012/11/03 3:18 http://www.burberryoutletonlineshopping.com/

I regard something truly special in this website.
burberry sale http://www.burberryoutletonlineshopping.com/

# mens shirts 2012/11/03 3:38 http://www.burberrysalehandbags.com/burberry-men-s

As soon as I noticed this web site I went on reddit to share some of the love with them.
mens shirts http://www.burberrysalehandbags.com/burberry-men-shirts.html

# mulberry bags 2012/11/07 2:41 http://www.mulberrybagukoutlet.co.uk

Perfectly pent subject material, regards for selective information. "Necessity is the mother of taking chances." by Mark Twain.
mulberry bags http://www.mulberrybagukoutlet.co.uk

# mulberry 2012/11/07 2:42 http://www.bagmulberry.co.uk

I the efforts you have put in this, appreciate it for all the great content.
mulberry http://www.bagmulberry.co.uk

# mulberry handbags 2012/11/07 2:42 http://www.bagmulberryuk.co.uk

I truly enjoy reading on this web site , it has got good posts . "Violence commands both literature and life, and violence is always crude and distorted." by Ellen Glasgow.
mulberry handbags http://www.bagmulberryuk.co.uk

# mulberry handbag 2012/11/08 19:14 http://www.bagmulberry.co.uk/mulberry-handbags-c-9

http://www.sacslongchamppascher2013.comlongchamp pas cher
mulberry handbag http://www.bagmulberry.co.uk/mulberry-handbags-c-9.html

# ways to make money from home 2012/11/12 10:35 http://www.makemoneyfine.com/

You have brought up a very wonderful details , thanks for the post.
ways to make money from home http://www.makemoneyfine.com/

# ルイビトン財布激安 2017/06/21 16:34 ufwbgaow@solid.ocn.ne.jp

誠実★信用★顧客は至上
在庫情報随時更新!
人気最新品┃特恵中┃☆腕時計、バッグ、財布、ベルト、アクセサリー、小物☆
商品数も大幅に増え、品質も大自信です
低価格を提供すると共に、品質を絶対保証しております
ご注文を期待しています

# プラダバッグコピー 2017/08/02 1:40 chxnmikhmp@outlook.com

『今季の新作』【送料無料】
【限定価格セール!】激安本物
【本物安い】品質100%保証!
【信頼老舗】激安販売中!
Japan最新の人気、本物保証!
信用できる取引店へようこそ
【信頼老舗】超激安!
人気No.1、激安店舗【即日発送】
大量仕入れ、直接輸入で圧倒的価格を実現
【新入荷】激安販売
私たちは、デザイナーの多数な選択を運ぶ
芸能人愛用『大注目』
手頃な価格でお好きなもの
今、私たちは安価な高級品海外通販しています。
高品質と最高の専門の顧客サービスと

# gagaコピー 2017/10/21 8:12 qyfrsydpwh@docomo.ne.jp

住所変更をしていなかったためカード承認確認に時間が掛かり明日楽が利用できませんでした。
高額のものなら確認も大事でしょうが私が買ったのは少額のものです。
他のお店ならカード払いですぐに決済できてもっと早く手元に届いたのかなと思いました。

# 韓国コピー 2017/10/27 14:14 gvvwqy@yahoo.co.jp

発送までスマート且つ迅速な対応で、メール内容も丁寧でした。
梱包に至ってはビックリするほど非常に丁寧で、嬉しい配慮です。
商品についても安心して購入できるお店と云う印象もあり、
また好みの商品があれば、こちらを是非利用したいと思っています。
韓国コピー http://www.watchsjp.com

# グッチ時計コピー 2017/11/05 17:17 rvsccp@msn.com

迅速な対応でスムーズに商品が届きました。梱包も丁寧で商品を大切に扱って頂いて嬉しく思います。商品の状態をとても詳しく記載され、直接見れない購入者の不安を取り除いてくれているようです。手書きのコメントも暖かさを感じ機会があったら利用したいです。
★ルイヴィトン★ダミエ★ブルームズベリPM★ショルダーバッグ★N42251★
気になっているバックがお徳に出ていたので写真など良く確認し状態の情報・お店のレビューも見て購入を決めました。新品で購入するのは初めてだったので届くまでチョット心配でしたが記載されている状態も全然問題なく本当に綺麗でした。とても良い買い物ができました。
グッチ時計コピー http://www.nawane111.com

# シャネル時計偽物 2017/11/06 2:24 mvfrrboat@live.com

HPの商品説明と実物が違わなかったので良かったです。
大変満足です。
ありがとうございました。
ルイヴィトン長財布がポイント2倍♪カードOK 送料無料 新品Bランクルイヴィトン 長財布 モノグラム コンチネンタルクラッチ T61217 訳あり 難あり USA限定 新品 がま口長財布 二つ折長財布
思ったより良い状態でした
ずっとヴィトンの長財布を探していました。
薄くて女性らしい型で大満足です。
外側の状態は思ったよりよくて、このお値段はお買い得でした。
シャネル時計偽物 http://www.nawane111.com/hermes-bag.htm

# コピーシャネル財布偽物 2017/11/11 11:24 yuvuqm@ocn.ne.jp

商品到着まで非常にスムーズで、安心して買い物を終えることができました。またこちらからのお願いに対しても、細やかな心遣いをいただきありがとうございました。また利用させていただきます。
送料&代引手数料無料☆新品ランクSA【送料無料】★ルイヴィトン★モノグラム★ポルトモネ・プラ★コインケース/小銭入れ★M61930★
本日商品が到着しました。とても状態の良い品物で、プレゼントしたヴィトン好きの妻も大喜びでした。こちらのショップの商品ランクの正確さに大満足の買い物でした。
コピーシャネル財布偽物 http://www.nawane111.com/hermes-bag.htm

# KypRuGjDfNNpeIfgEhT 2018/08/16 10:47 http://www.suba.me/

ZUXloG Really enjoyed this blog.Really looking forward to read more. Keep writing.

# jLSWTCPXEEXXIYLvcW 2018/08/18 2:42 https://medium.com/@MatthewGurner/va-home-loan-tex

Thanks for the article, how may i make is so that We get a message whenever there is a new revise?

# uIByOudtCgiXzJhqw 2018/08/18 4:22 http://komunalno.com.ba/index.php/component/k2/ite

pretty helpful material, overall I imagine this is worth a bookmark, thanks

# cNkaMYgQLOqe 2018/08/18 5:11 http://vinochok-dnz17.in.ua/user/LamTauttBlilt824/

I truly appreciate this blog post.Thanks Again. Much obliged.

# mgOrOqOfAVmPLg 2018/08/18 9:31 https://www.amazon.com/dp/B07DFY2DVQ

Just Browsing While I was surfing yesterday I saw a great article concerning

# SWmpUXArKq 2018/08/19 3:16 http://b.augustamax.com/story.php?title=truyen-hot

That is a good tip particularly to those new to the blogosphere. Simple but very precise info Thanks for sharing this one. A must read post!

# xiJOPKtIZJWwNtvHq 2018/08/19 3:42 http://merinteg.com/blog/view/88817/primary-advant

Very good blog.Much thanks again. Much obliged.

# nkGSeSlCPzBwpFC 2018/08/19 4:49 https://williamdougherty.de.tl/

I went over this web site and I believe you have a lot of great info, saved to bookmarks (:.

# HsbOhyWzJEF 2018/08/20 15:25 https://www.yell.com/biz/instabeauty-cambridge-861

The Silent Shard This will likely almost certainly be quite handy for some of your respective positions I decide to you should not only with my website but

# tEpAGKTSNbMBoaIg 2018/08/20 21:44 http://zhenshchini.ru/user/Weastectopess347/

What are the best schools for a creative writing major?

# XBigCptYfvz 2018/08/21 19:00 http://www.cariswapshop.com/members/shametailor9/a

This is one awesome blog post.Thanks Again. Want more.

# mTKBagNHyUcRDGd 2018/08/21 23:03 https://lymiax.com/

Just a smiling visitant here to share the love (:, btw outstanding style and design. Reading well is one of the great pleasures that solitude can afford you. by Harold Bloom.

# nAuVmwRNWDExtOv 2018/08/22 2:42 https://disqus.com/by/tacenlealo/

Thanks for sharing, this is a fantastic blog post.Much thanks again.

# gTovlxxKfWplhX 2018/08/22 21:57 http://secureegypt98.bravesites.com/entries/genera

Music started playing anytime I opened up this web-site, so irritating!

# HCITIcqIMmbC 2018/08/23 1:07 http://bcirkut.ru/user/alascinna600/

If you occasionally plan on using the web browser that as not an issue, but if you are planning to browse the web

# etWVRvQZOkycZhQEvxs 2018/08/23 3:23 http://crapstrainerpro.com/forums/user/unfodafrofe

What type of digicam is this? That is definitely a great top quality.

# pakFTDKFkBhEvGwnjg 2018/08/23 14:00 http://5stepstomarketingonline.com/JaxZee/?pg=vide

Your style is really unique in comparison to other people I ave read stuff from. Thanks for posting when you ave got the opportunity, Guess I will just bookmark this page.

# tZSXqCvETmalWPj 2018/08/23 18:55 https://www.christie.com/properties/hotels/a2jd000

Well I really liked reading it. This tip procured by you is very helpful for accurate planning.

# AVFTMqqRsTIq 2018/08/24 9:47 http://prugna.net/forum/profile.php?id=635862

wander. Final tug in the class was St. Lately it has been immaculately assembled

# LFcqyQWwdMZ 2018/08/28 0:59 https://www.yumarealestateacademy.com/members/area

Looking forward to reading more. Great article post.Really looking forward to read more. Really Great.

# KFabiJfHljNEgiaQ 2018/08/28 2:09 http://tasikasik.com/members/decadenephew4/activit

Looking forward to reading more. Great article post.Thanks Again. Keep writing.

# QhgcDnxRPYHtFKjiby 2018/08/28 19:24 https://www.youtube.com/watch?v=yGXAsh7_2wA

Major thankies for the post.Thanks Again. Awesome.

# JYQHrDBGiurZiOD 2018/08/29 8:45 http://odbo.biz/users/MatPrarffup867

Looking forward to reading more. Great article post.Much thanks again. Awesome.

# CQHgMXdVNGiUTkwEqNG 2018/08/29 23:38 http://www.etihadst.com.sa/web/members/driverdaisy

Very good blog! Do you have any tips and hints for aspiring writers?

# RIEXxvCiiQjahb 2018/08/30 1:06 http://stephwenburg.com/members/mistband21/activit

Major thanks for the blog.Much thanks again. Awesome.

# jjUONeYwGVXUVpH 2018/08/30 18:26 http://all4webs.com/dollargate5/ytweilzxiz023.htm

Wow, what a video it is! Actually fastidious quality video, the lesson given in this video is truly informative.

# AtwWTIYclVY 2018/08/30 18:34 https://talkfriday70.blogcountry.net/2018/08/30/ma

Thanks again for the blog. Keep writing.

# ijPZkJrBvFWih 2018/08/31 17:15 https://caplace93.odablog.net/2018/08/30/find-out-

Wonderful post! We will be linking to this great content on our site. Keep up the good writing.

# kUycXUftETzHyQ 2018/09/01 13:12 http://www.fmnokia.net/user/TactDrierie761/

I really liked your article post.Much thanks again. Want more. anal creampie

# wMoRyagFxRrDxM 2018/09/02 18:09 http://www.windowspcapk.com/free-apk-download/apps

Some really excellent content on this internet site , thanks for contribution.

# DpxVEzuJtT 2018/09/03 21:09 https://www.youtube.com/watch?v=TmF44Z90SEM

some truly wonderful information, Gladiolus I discovered this.

# sbblMruvkOMHVGHgm 2018/09/05 0:51 https://frostopera6.databasblog.cc/2018/09/04/adva

Simply wanna state that this is handy , Thanks for taking your time to write this.

# bCYkCjzHab 2018/09/05 1:23 https://www.liveinternet.ru/users/boisen_snedker/b

Thanks a lot for the article.Thanks Again. Awesome.

# RIKwkrEitFLGZm 2018/09/05 6:19 https://www.youtube.com/watch?v=EK8aPsORfNQ

I think this is a real great article post.Thanks Again. Awesome.

# IAanCwmxPixZbt 2018/09/05 17:39 http://simeonward.bravesites.com/

that as why this post is outstdanding. Thanks!

# ZmXDkHurcPsVmAO 2018/09/05 18:41 http://applehitech.com/story.php?title=bigg-boss-t

Looking forward to reading more. Great article post.

# gDBfczzsvGdPWDVt 2018/09/06 16:56 https://joinfrost6.blogcountry.net/2018/09/04/flex

Major thanks for the blog post. Really Great.

# xznYbXAvTsY 2018/09/06 20:01 http://www.etihadst.com.sa/web/members/tvwar21/act

Well I definitely liked studying it. This post procured by you is very useful for proper planning.

# kyFQqAPHoX 2018/09/06 21:52 https://www.youtube.com/watch?v=TmF44Z90SEM

Stunning quest there. What occurred after? Thanks!

# QrPrmZrSaaGHNdGyB 2018/09/07 20:02 https://buffetdinghy78.odablog.net/2018/09/06/seve

I truly appreciate this blog article.Really looking forward to read more. Want more.

# fmfejEblHwJDguyqX 2018/09/10 15:59 https://www.youtube.com/watch?v=EK8aPsORfNQ

Remarkable! Its actually awesome post, I have got much clear idea

# ccFqgEpmlT 2018/09/10 20:11 https://www.youtube.com/watch?v=5mFhVt6f-DA

not everyone would need a nose job but my girlfriend really needs some rhinoplasty coz her nose is kind of crooked*

# FmUvyoNlWKjLpPfw 2018/09/11 14:38 http://nifnif.info/user/Batroamimiz957/

You are my inspiration , I own few blogs and very sporadically run out from to post .

# kgsVxCrKnGWuWiAVma 2018/09/11 16:09 http://publish.lycos.com/shannonmaynardd/2018/09/0

Yeah, in my opinion, it is written on every fence!!

# iRmIvnTkXbeoXsuB 2018/09/12 0:48 http://www.experttechnicaltraining.com/members/kit

Very good comments, i really love this site , i am happy to bookmarked and tell it to my friend, thanks for your sharing.

# OXfFLaIqoEtRsRXFC 2018/09/12 2:36 https://hareembridges.yolasite.com/

really make my blog jump out. Please let me know where you got your theme.

# UrVrGgMBPQBFzg 2018/09/12 17:40 https://www.youtube.com/watch?v=4SamoCOYYgY

It as best to take part in a contest for probably the greatest blogs on the web. I will advocate this site!

# llVBRjimLWgWeQ 2018/09/12 20:54 https://www.youtube.com/watch?v=TmF44Z90SEM

Retain up the terrific piece of function, I read few content material on this website and I think that your web weblog is actual intriguing and has got circles of good info .

# tPbvwCyvykfPCNnf 2018/09/13 0:06 https://www.youtube.com/watch?v=EK8aPsORfNQ

the time to study or pay a visit to the material or websites we ave linked to below the

# OWYgMJnFoxozNaYs 2018/09/14 20:09 http://oqyzaqolasav.mihanblog.com/post/comment/new

Im thankful for the post.Thanks Again. Want more.

# VvXPVQgvwibYeMgVv 2018/09/14 23:39 http://seo-post.tk/story.php?title=mundoparabebes-

Wow, wonderful blog layout! How long have you been blogging

# KkHfYxdJPTBx 2018/09/17 18:59 http://flocksinger31.ebook-123.com/post/the-way-to

Im thankful for the blog.Thanks Again. Great.

# pBWHQjeWRwrXdhO 2018/09/18 0:31 http://memakebusiness.services/story/41119

we came across a cool internet site which you may possibly love. Take a look if you want

# XpfsPGPgdsZ 2018/09/18 3:12 https://www.kiwibox.com/hapteraind/blog/entry/1455

Last week I dropped by this web site and as usual wonderful content material and ideas. Like the lay out and color scheme

# bCPsTNbiLmGHtHM 2018/09/18 4:12 https://tabletennis4u.jimdofree.com/

looking for. Would you offer guest writers to write content available for you?

# gIHWmQgDwZSKM 2018/09/18 5:26 http://isenselogic.com/marijuana_seo/

Thanks for sharing, this is a fantastic article.Really looking forward to read more.

# KQOkPmHkcKHASrVfCDd 2018/09/20 9:48 https://www.youtube.com/watch?v=XfcYWzpoOoA

useful info with us. Please stay us up to date

# JkvmzjfOFYholJ 2018/09/21 18:07 http://freeseo.ga/story.php?title=keep-fit-classes

recognize his kindness are cost-free to leave donations

# AgpEUYWQbeQuncLY 2018/09/21 19:13 https://www.youtube.com/watch?v=rmLPOPxKDos

Louis Vuitton Online Louis Vuitton Online

# lYnizwsZNmSLCbzAxEx 2018/09/24 20:02 http://seolister.cf/story.php?title=click-here-260

Wonderful article! We will be linking to this particularly great post on our site. Keep up the great writing.

# weBmrPQGFgMO 2018/09/24 21:49 http://hitcheckseo.website/story.php?id=43590

who has shared this great post at at this place.

# VTzHjpqjZsggnmUss 2018/09/26 5:12 https://www.youtube.com/watch?v=rmLPOPxKDos

Network Marketing is not surprisingly very popular because it can earn you numerous revenue within a really brief time period..

# nuEEjkaYOFOHno 2018/09/26 13:58 https://digitask.ru/

I value the blog post.Much thanks again. Want more.

タイトル  
名前  
Url
コメント