やってみる

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

Eto.Forms.Splitterを使ってみた

 表示領域を分離する。幅をドラッグ&ドロップで変更できる。

成果物

f:id:ytyaru:20181218143047p:plain

f:id:ytyaru:20181218143040p:plain f:id:ytyaru:20181218143114p:plain

対象環境

ソースコード

MainForm.cs

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

namespace Hello0
{
    public partial class MainForm : Form
    {
        private RichTextArea textarea1;
        private WebView webView1;
        public MainForm()
        {
            Title = "Splitter";
            ClientSize = new Size(800, 600);
            CreateUi();
        }
        private void CreateUi()
        {
            //textarea1 = new RichTextArea() { Width=this.Width/2, Height=this.Height, Text="何かしらの文字列。" };
            textarea1 = new RichTextArea() { Width=1, Height=1, Text="何かしらの文字列。" };
            textarea1.Focus();
            webView1 = new WebView() { Width=1, Height=1, Url=new Uri("https://www.google.co.jp") } ;
            //webView1 = new WebView() { Width=this.Width/2, Height=this.Height, Url=new Uri("https://www.google.co.jp") } ;
            var splitter= new Eto.Forms.Splitter();
            splitter.Panel1 = textarea1;
            splitter.Panel2 = webView1;
            //splitter.Panel1.Width = this.Width / 2;
            Content = new TableLayout() {
                Padding = 0,
                Spacing = new Size(0, 0),
                Rows = {
                    new TableRow(splitter),
                }
            };
        }
    }
}

大きさ

  • ウインドウの大きさに合わせて自動でサイズ調整して欲しい
    • これを実現するためにTableLayoutを使った
  • ウインドウを分割して幅を調整したい
    • これを実現するためにSplitterを使った

Eto.Forms.Splitter

  • splitterである縦棒が不可視(コントロールの境界線がわからないときどうするの?)
  • splitterの幅が細すぎて掴むのが難しい(Widthプロパティを設定しても変わらないと思われる)
  • コントロールの左側が見えなくなることがある
    • たとえばコントロールの幅を400にしたとき、それよりも表示領域が小さくなると左側が見えなくなる(せめて右側にしてくれ)。しかもスクロールバーが出ない!
      • しかたなくコントロールの幅を1にすると、左側のコントロール表示領域が最小になり見にくい(対策なし)

所感

 スクロールバーのコントロールと併用すれば解決するだろうか? このままだと使いづらい。

 あと、縦に分割するときはどうするの?