具有自定义OnPaint的F#中的自定义Windows.Forms控件?

akavel

我试图在F#中实现自定义Windows.Forms控件,但似乎根本没有调用“ OnPaint”方法(它不会显示,并且调试消息也不会打印到控制台)。我究竟做错了什么?

open System
open System.Drawing
open System.Windows.Forms

let form = new Form(Visible=true, Text="Drawing App", WindowState=FormWindowState.Maximized)

type Canvas() =
    class
        inherit Control()
        override c.OnPaint(e:PaintEventArgs) =
            System.Diagnostics.Debug.WriteLine("OnPaint")
            base.OnPaint(e)
            let g = e.Graphics
            g.DrawLine(Pens.Blue, 0, 0, c.Width, c.Height)
    end

System.Diagnostics.Debug.WriteLine("hello")
let canvas = new Canvas()
canvas.Visible <- true
form.Controls.Add(canvas)

[<STAThread>]
Application.Run(form)

如果我将“ let canvas ...”块替换为下面的块,则会在窗口显示一个标签

let label = new Label(Text="sample label")
form.Controls.Add(label)
akavel

受到@FoggyFinder的答案的启发,这就是我现在要讨论的内容:

open System
open System.Drawing
open System.Windows.Forms

let form = new Form(Visible=true, Text="Drawing App", WindowState=FormWindowState.Maximized)

type Canvas() =
    inherit Control()
    override c.OnPaint(e:PaintEventArgs) =
        //System.Diagnostics.Debug.WriteLine("OnPaint")
        base.OnPaint(e)
        let g = e.Graphics
        g.DrawLine(Pens.Blue, 0, 0, c.Width, c.Height)
    override c.OnResize(e:EventArgs) =
        c.Refresh()

let canvas = new Canvas(Dock = DockStyle.Fill)
form.Controls.Add(canvas)

[<STAThread>]
Application.Run(form)

似乎为我工作,并且在我眼中看起来更合适。我现在会将其标记为公认的解决方案,但是我仍然对可能的改进或其他主张感兴趣。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用户控件中的自定义方法

来自分类Dev

具有自定义控件的MPMoviewcontroller和AVPlayer

来自分类Dev

在Xamarin中创建自定义控件

来自分类Dev

自定义控件OnPaint不会触发

来自分类Dev

DataGridTemplateColumn的自定义控件

来自分类Dev

具有模板支持的Windows Phone自定义用户控件

来自分类Dev

将Android View作为自定义控件集成到Xamarin.Forms中

来自分类Dev

创建具有覆盖onclick的自定义控件

来自分类Dev

Xamarin iOS中具有MVVMCross且没有XIB的自定义控件

来自分类Dev

Xamarin Forms中的自定义控件不起作用

来自分类Dev

C#Xamarin表单-具有属性的自定义控件上的自定义事件

来自分类Dev

Windows窗体中的自定义控件出现问题

来自分类Dev

[Xamarin.Forms] ListView中的自定义控件

来自分类Dev

自定义gui控件

来自分类Dev

具有自定义控件的MPMoviewcontroller和AVPlayer

来自分类Dev

具有自定义IDownloadManager的WebBrowser控件的AccessViolationException

来自分类Dev

ReactiveUI中的Xamarin.Forms控件是否需要自定义绑定?

来自分类Dev

指令自定义控件

来自分类Dev

在自定义控件中替换DataTemplate

来自分类Dev

Scrollviewer中的自定义控件

来自分类Dev

具有溢出布局的UWP自定义控件

来自分类Dev

DynamicResource中的自定义控件属性

来自分类Dev

用户控件中的自定义事件

来自分类Dev

具有相同修改的自定义控件验证器

来自分类Dev

具有System.Windows.Forms和Custom基类的自定义WinForms控件

来自分类Dev

UITabBarController 中的自定义控件

来自分类Dev

自定义控件中的 Xamarin BindableProperty

来自分类Dev

Xamarin Forms - 从自定义渲染器检查控件是否具有从 XAML 设置的属性

来自分类Dev

xamarin 中的自定义控件示例?

Related 相关文章

热门标签

归档