Eto.Forms.Splitterを使ってみた
表示領域を分離する。幅をドラッグ&ドロップで変更できる。
成果物
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch(9.0) 2018-06-27
- Mono 5.16.0
- MonoDevelop 7.6 build 711
- Eto.Forms 2.4.1 拡張機能, NuGetパッケージ
- .NET Core 2.2, MonoDevelop参照方法
ソースコード
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プロパティを設定しても変わらないと思われる)
- コントロールの左側が見えなくなることがある
所感
スクロールバーのコントロールと併用すれば解決するだろうか? このままだと使いづらい。
あと、縦に分割するときはどうするの?