やってみる

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

Raspbian stretch MonoDevelop Eto.Forms Code プロジェクト で WebView を追加する

 今度はXMLでなくC#で実装。Googleサイトを表示できた!

対象環境

前回

手順

  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

 追加するコードは以下。

new WebView() {
    Width = 800, 
    Height = 600, 
    Url = new System.Uri("https://www.google.co.jp")
},

 ファイル全体は以下。

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

namespace HelloEtoCodeWebView
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            Title = "My Eto Form";
            ClientSize = new Size(400, 350);

            Content = new StackLayout
            {
                Padding = 10,
                Items =
                {
                    "Hello World!",
                    // add more controls here
                    new WebView() {
                        Width = 800, 
                        Height = 600, 
                        Url = new System.Uri("https://www.google.co.jp")
                    },
            };

            // create a few commands that can be used for the menu and toolbar
            var clickMe = new Command { MenuText = "Click Me!", ToolBarText = "Click Me!" };
            clickMe.Executed += (sender, e) => MessageBox.Show(this, "I was clicked!");

            var quitCommand = new Command { MenuText = "Quit", Shortcut = Application.Instance.CommonModifier | Keys.Q };
            quitCommand.Executed += (sender, e) => Application.Instance.Quit();

            var aboutCommand = new Command { MenuText = "About..." };
            aboutCommand.Executed += (sender, e) => new AboutDialog().ShowDialog(this);

            // create menu
            Menu = new MenuBar
            {
                Items =
                {
                    // File submenu
                    new ButtonMenuItem { Text = "&File", Items = { clickMe } },
                    // new ButtonMenuItem { Text = "&Edit", Items = { /* commands/items */ } },
                    // new ButtonMenuItem { Text = "&View", Items = { /* commands/items */ } },
                },
                ApplicationItems =
                {
                    // application (OS X) or file menu (others)
                    new ButtonMenuItem { Text = "&Preferences..." },
                },
                QuitItem = quitCommand,
                AboutItem = aboutCommand
            };

            // create toolbar           
            ToolBar = new ToolBar { Items = { clickMe } };
   
        }
    }
}

3. 実行

  1. Ctrl+F5で実行
  2. 怒られた
    f:id:ytyaru:20181202084218p:plain
  3. ファイルパスを辿ってexeファイルを直接叩くと実行できた
    f:id:ytyaru:20181202084343p:plain
    f:id:ytyaru:20181202123126p:plain

所感

 XAMLよりCodeのほうが扱いやすそうに見える。