Back to Top

プログラムの覚書

Category: C#

.NET C#

C# Webページ・WebコンテンツのHTMLファイルを取得する

C#にてWebのHTMLを取得する方法は、幾つかありますので説明します。

サンプルプログラムとして、Form上にボタンとテキストボックスを配置します。TextBoxはMultilineをtrueにします。(データ表示用)

WebClient使用での方法

private void button1_Click(object sender, EventArgs e)
{
    WebClient wc = new WebClient();
    try
    {
        textBox1.Text += wc.DownloadString("http://www.microsoft.com");
    }
    catch (WebException ex)
    {
        textBox1.Text += ex.Message;
    }
}

 

HttpWebRequest使用での方法

private void button2_Click(object sender, EventArgs e)
{
    System.Net.HttpWebRequest wr = (System.Net.HttpWebRequest)System.Net.WebRequest.Create("http://www.microsoft.com");

    System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)wr.GetResponse();

    System.IO.Stream st = res.GetResponseStream();
    System.IO.StreamReader sr = new System.IO.StreamReader(st, System.Text.Encoding.UTF8);

    string html = sr.ReadToEnd();

    sr.Close();
    st.Close();
    res.Close();

    textBox1.Text = html;
}

 

 WebRequest使用での方法

private void button3_Click(object sender, EventArgs e)
{
    System.Net.WebRequest wr = System.Net.WebRequest.Create("http://www.microsoft.com");

    System.Net.WebResponse res = wr.GetResponse();

    System.IO.Stream st = res.GetResponseStream();

    System.IO.StreamReader sr = new System.IO.StreamReader(st, System.Text.Encoding.UTF8);
    string html = sr.ReadToEnd();

    sr.Close();
    st.Close();
    res.Close();

    textBox1.Text = html;
}

 

Posted in C# | Leave a reply

C# プロパティ変更通知イベント実装

C#にてClass内でのプロパティ変更の通知イベント(INotifyPropertyChanged)の実装方法を説明します。

 

INotifyPropertyChangedの実装方法

基本的なプロパティ通知の方法ですが、結構めんどうです。

public class PersonProperty : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value)
            {
                _name = value;

                OnPropertyChanged("Name");
            }
        }
    }
    private string _name;

    public string Age
    {
        get { return _Age; }
        set
        {
            if (_Age != value)
            {
                _Age = value;

                OnPropertyChanged("Age");
            }
        }
    }
    private string _Age;

    private void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

呼び出し側

private void button1_Click(object sender, EventArgs e)
{
    PersonProperty Person = new PersonProperty();

    Person.PropertyChanged += PersonPropertyChanged;
    Person.Name = "みかん";
}

Private void PersonPropertyChanged(object sender, PropertyChangedEventArgs e)
{
    // 文字列でプロパティ名を判別
    if (e.PropertyName != "Name") return;

    var p = (PersonProperty)sender;
    MessageBox.Show(p.Name + "に変更されました");
}

 

Posted in C# | Leave a reply