VB.Net
.NET
WinForms
CefSharp

VB.net(WinForms)でのCefsharpの基本的な扱い方について

はじめに

こんにちは。@masteralice3104こと「ますたー。」です。
Qiita初投稿です。

拙作の艦これ専用ブラウザ"Admiral's Desk"の開発にあたってCefsharpを採用しようとコーディングしていたのですが、そもそもVB.netでの資料が余りに(悲しいほど)少なかったので書き残すことにします。

そもそもCefsharpとは

CefsharpとはChromiumの.NET用ラッパーみたいなものです。
でもWebbrowserコントロールの完全代替になるかというと「否」ですが、限定的な用途であれば十分実用となりそうです。

ここでの前提

Visual Studio Community 2017 version 15.6.4
VB.net(.NET 4.6.2)でかつWinFormsを使用
Cefsharp.WinForms 65.0.0

下準備

nugetでCefSharp.WinFormsをインストール

スクリーンショット (216).png

基本

form1.vb
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    InitializeComponent()

    Dim settings = New CefSharp.CefSettings
    CefSharp.Cef.Initialize(settings)

    Dim browser = New CefSharp.WinForms.ChromiumWebBrowser("http://www.google.co.jp")
    Controls.Add(browser)
    browser.Dock = DockStyle.Fill

End Sub

Private Sub Form1_Exit() Handles MyBase.Closed

        CefSharp.Cef.Shutdown()

End Sub

細かいところは省略したが特に問題はないはず。




Dim settings = New CefSharp.CefSettings
CefSharp.Cef.Initialize(settings)

ここで作ったsettingでCefsharp自体をセットするのですが、設定の仕方は後ほど説明する予定です。

Dim browser = New CefSharp.WinForms.ChromiumWebBrowser("http://www.google.co.jp")

Cefsharpコンポーネントによるブラウザが(裏で)起動します。
感覚としてはwebBrowserコントロールのwebBrowser1.Navigate("URL")みたいな感じでしょうか。
ポイントは、この時点では表示がなされていないことです。(当然ですね)

Controls.Add(browser)

ここでようやくChromiumWebBrowserコントロールとして追加されます。が、表示にバグが有るようで

browser.Dock = DockStyle.Fill

としないと表示してくれない模様です。

CefSharp.Cef.Shutdown()

そしてCef.Shutdown()はMyBase.Closed時(つまりウインドウが閉じられる時)に呼ばれる関数です。れがないと暴走します。(あっても暴走するときがありますが)
後片付けはしっかり行いましょう。

さいごに

ざっくりした解説なので補足等随時掲載します。
コードの間違いやバグなどあれば、教えていただけるととても嬉しいです。