これでTextAreaの右クリックメニューを消せるかと思ったのだが、そもそも継承できなかった。
成果物
対象環境
- 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参照方法
前回まで
TextAreaで右クリックするとコンテキストメニューが自動で出る。これを削除したいが、できなかった。TextAreaを継承しても上書きできなかった。
- http://ytyaru.hatenablog.com/entry/2020/02/27/000000
- http://ytyaru.hatenablog.com/entry/2020/02/28/000000
- http://ytyaru.hatenablog.com/entry/2020/02/29/000000
今回
TextAreaでなくその親であるTextControl
を継承してみたらどうなるか試してみた。結果、そもそも継承できなかった。
using System; using Eto.Forms; using Eto.Drawing; namespace ExtendTextControl { public partial class MainForm : Form { public MainForm() { Title = "Extend TextControl"; ClientSize = new Size(400, 350); //TextControl textcontrol = new TextControl(); // abstract class TextControl2 textcontrol2 = new TextControl2(); DynamicLayout layout = new DynamicLayout(); //layout.Add(textcontrol); layout.Add(textcontrol2); Content = layout; } } }
using System; using Eto.Forms; namespace ExtendTextControl { public class TextControl2 : TextControl { public TextControl2() : base() { } } }
ターミナルを起動し、実行ファイルを実行すると以下のエラー。
Unhandled Exception: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: Type for 'ExtendTextControl.TextControl2' could not be found in this platform
TextArea、TextControlを参照し、真似をして以下のように変更した。
using System; using Eto; using Eto.Forms; using Eto.IO; namespace ExtendTextControl { [Handler(typeof(TextControl2.IHandler))] public class TextControl2 : TextControl { new IHandler Handler { get { return (IHandler)base.Handler; } } static TextControl2() {} } }
実行すると同様のエラー。