やってみる

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

Eto.Forms.DynamicLayout.ContextMenuを使ってみた

 TextAreaのデフォルト右クリックを継承または上書きしたかったが、できなかった。

成果物

f:id:ytyaru:20181220103655p:plain

対象環境

参考

ソースコード

MainForm.cs

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

namespace HelloDDynamicLayoutContextMenu
{
    public partial class MainForm : Form
    {
        private TextArea textArea1;
        private ContextMenu textArea1Menu;
        public MainForm()
        {
            Title = "DynamicLayout.ContextMenu";
            ClientSize = new Size(800, 600);

            textArea1 = new TextArea() { Width=800, Height=600 };
            textArea1Menu = new ContextMenu();
            Command showDialog = new Command();
            showDialog.MenuText = "ダイアログ表示";
            showDialog.Executed += (object sender, EventArgs e) => {
                MessageBox.Show("ダイアログを表示します。");
            };
            textArea1Menu.Items.Add(showDialog);
            var layout = new DynamicLayout();
            layout.Add(textArea1);
            layout.ContextMenu = textArea1Menu;
            Content = layout;
        }
    }
}

問題

 Eto.Forms.TextAreaにはデフォルトで右クリックメニューがある。だが、これをコードから参照することができない。

所感

 何か解決方法はないものか……。

 ハイライトできるテキストエディタを諦めたが、標準のTextAreaが無能すぎる。