やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Raspbian stretch MonoDevelop Eto.Forms Code WebView のURIをテキストボックスで変更する

 任意のURLを表示できた!

対象環境

前回

手順

  1. プロジェクト作成
  2. WebView追加
  3. 実行

1. プロジェクト作成

  1. メニュー→ファイル新しいソリューション
    f:id:ytyaru:20181201194454p:plain
  2. マルチプラットフォームアプリEto Application f:id:ytyaru:20181202083840p:plain
  3. 名前などを適当に入力し、Codeを選択する
    f:id:ytyaru:20181202083922p:plain
  4. 場所を入力する
    f:id:ytyaru:20181201194509p:plain
  5. プロジェクトが作成される
    f:id:ytyaru:20181202084143p:plain

2. WebView追加

  1. MainForm.csファイルを開く
  2. Content = ...の内部にWebViewの実装を書く
    f:id:ytyaru:20181202122723p:plain

ソースコード抜粋

MainForm.cs

using System;
using Eto.Forms;
using Eto.Drawing;

namespace HelloEtoCodeWebView
{
    public partial class MainForm : Form
    {
        private WebView webView1;
        private TextBox textBox1;
        public MainForm()
        {         
            Title = "My Eto Form";
            ClientSize = new Size(800, 600);         
            Content = new StackLayout
            {
                Padding = 10,
                Items =
                {
                    this.CreateTextBox(),
                    this.CreateWebView()
                }
            };
        }
        private TextBox CreateTextBox() {
            textBox1 = new TextBox();
            textBox1.Width = 800;
            textBox1.Text = "https://www.google.co.jp";
            textBox1.KeyDown += TextBox1_KeyDown;
            return textBox1;         
        }
        private WebView CreateWebView() {
            this.webView1 = new WebView()
            {
                Width = 800,
                Height = 600,
                Url = new System.Uri("https://www.google.co.jp")
            };
            return this.webView1;
        }
        void TextBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Keys.Enter) {
                Console.WriteLine(this.textBox1.Text);
                try
                {
                    this.webView1.Url = new Uri(this.textBox1.Text);
                }
                catch (Exception exception)
                {
                    Console.WriteLine(exception);
                    MessageBox.Show(exception.Message);
                }            
            }
        }
    }
}

3. 実行

  1. Ctrl+F5で実行
  2. 怒られた
    f:id:ytyaru:20181202084218p:plain
  3. ファイルパスを辿ってexeファイルを直接叩くと実行できた
    f:id:ytyaru:20181202084343p:plain
    f:id:ytyaru:20181202153857p:plain
  4. テキストボックスのURLをhttps://www.yahoo.co.jpに変更し、Enterキーを押す
    f:id:ytyaru:20181202153911p:plain

 無効なURIだと例外が出る。おそらく先頭がhttpなどではない場合にはこうなる。

f:id:ytyaru:20181202153927p:plain

 例外処理としてメッセージボックスを表示するようにした。内容はException.Message

f:id:ytyaru:20181202153938p:plain

 例外を出さず、WebViewでエラーを表示する場合もある。おそらく先頭がhttpなどで存在しないURLならこのパターン。

f:id:ytyaru:20181202154011p:plain