Skip to content

Commit bfbd30c

Browse files
committed
WinForms - Add custom Designer
Add some custom designer attributes Converted the logo.png to a 16x16 bmp as a short term placeholder (someone is welcome to contribute something better) Hide all the handlers from the designer
1 parent da83065 commit bfbd30c

4 files changed

+88
-0
lines changed

CefSharp.WinForms/CefSharp.WinForms.csproj

+8
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
<ItemGroup>
5555
<Reference Include="System" />
5656
<Reference Include="System.Core" />
57+
<Reference Include="System.Design" />
5758
<Reference Include="System.Drawing" />
5859
<Reference Include="System.ServiceModel" />
5960
<Reference Include="System.Windows.Forms" />
@@ -64,6 +65,7 @@
6465
<Reference Include="System.Xml" />
6566
</ItemGroup>
6667
<ItemGroup>
68+
<Compile Include="ChromiumWebBrowserDesigner.cs" />
6769
<Compile Include="Internals\DefaultFocusHandler.cs" />
6870
<Compile Include="Internals\ControlExtensions.cs" />
6971
<Compile Include="Internals\ParentFormMessageInterceptor.cs" />
@@ -84,6 +86,12 @@
8486
<Name>CefSharp</Name>
8587
</ProjectReference>
8688
</ItemGroup>
89+
<ItemGroup>
90+
<EmbeddedResource Include="ChromiumWebBrowser.bmp" />
91+
</ItemGroup>
92+
<ItemGroup>
93+
<EmbeddedResource Include="CefSharpLogo.png" />
94+
</ItemGroup>
8795
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
8896
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
8997
Other similar extension points exist, see Microsoft.Common.targets.
822 Bytes
Binary file not shown.

CefSharp.WinForms/ChromiumWebBrowser.cs

+21
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using System.ComponentModel;
99
using System.Runtime.CompilerServices;
1010
using System.Windows.Forms;
11+
using System.Drawing;
1112

1213
namespace CefSharp.WinForms
1314
{
@@ -17,6 +18,9 @@ namespace CefSharp.WinForms
1718
/// <seealso cref="System.Windows.Forms.Control" />
1819
/// <seealso cref="CefSharp.Internals.IWebBrowserInternal" />
1920
/// <seealso cref="CefSharp.WinForms.IWinFormsWebBrowser" />
21+
[Docking(DockingBehavior.AutoDock),DefaultEvent("LoadingStateChanged"), ToolboxBitmap(typeof(ChromiumWebBrowser)),
22+
Description("CefSharp ChromiumWebBrowser - Chromium Embedded Framework .Net wrapper. https://github.com/cefsharp/CefSharp"),
23+
Designer(typeof(ChromiumWebBrowserDesigner))]
2024
public class ChromiumWebBrowser : Control, IWebBrowserInternal, IWinFormsWebBrowser
2125
{
2226
/// <summary>
@@ -63,11 +67,13 @@ public class ChromiumWebBrowser : Control, IWebBrowserInternal, IWinFormsWebBrow
6367
/// Gets or sets the browser settings.
6468
/// </summary>
6569
/// <value>The browser settings.</value>
70+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
6671
public BrowserSettings BrowserSettings { get; set; }
6772
/// <summary>
6873
/// Gets or sets the request context.
6974
/// </summary>
7075
/// <value>The request context.</value>
76+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
7177
public IRequestContext RequestContext
7278
{
7379
get { return requestContext; }
@@ -113,56 +119,67 @@ public IRequestContext RequestContext
113119
/// Implement <see cref="IDialogHandler" /> and assign to handle dialog events.
114120
/// </summary>
115121
/// <value>The dialog handler.</value>
122+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
116123
public IDialogHandler DialogHandler { get; set; }
117124
/// <summary>
118125
/// Implement <see cref="IJsDialogHandler" /> and assign to handle events related to JavaScript Dialogs.
119126
/// </summary>
120127
/// <value>The js dialog handler.</value>
128+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
121129
public IJsDialogHandler JsDialogHandler { get; set; }
122130
/// <summary>
123131
/// Implement <see cref="IKeyboardHandler" /> and assign to handle events related to key press.
124132
/// </summary>
125133
/// <value>The keyboard handler.</value>
134+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
126135
public IKeyboardHandler KeyboardHandler { get; set; }
127136
/// <summary>
128137
/// Implement <see cref="IRequestHandler" /> and assign to handle events related to browser requests.
129138
/// </summary>
130139
/// <value>The request handler.</value>
140+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
131141
public IRequestHandler RequestHandler { get; set; }
132142
/// <summary>
133143
/// Implement <see cref="IDownloadHandler" /> and assign to handle events related to downloading files.
134144
/// </summary>
135145
/// <value>The download handler.</value>
146+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
136147
public IDownloadHandler DownloadHandler { get; set; }
137148
/// <summary>
138149
/// Implement <see cref="ILoadHandler" /> and assign to handle events related to browser load status.
139150
/// </summary>
140151
/// <value>The load handler.</value>
152+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
141153
public ILoadHandler LoadHandler { get; set; }
142154
/// <summary>
143155
/// Implement <see cref="ILifeSpanHandler" /> and assign to handle events related to popups.
144156
/// </summary>
145157
/// <value>The life span handler.</value>
158+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
146159
public ILifeSpanHandler LifeSpanHandler { get; set; }
147160
/// <summary>
148161
/// Implement <see cref="IDisplayHandler" /> and assign to handle events related to browser display state.
149162
/// </summary>
150163
/// <value>The display handler.</value>
164+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
151165
public IDisplayHandler DisplayHandler { get; set; }
152166
/// <summary>
153167
/// Implement <see cref="IContextMenuHandler" /> and assign to handle events related to the browser context menu
154168
/// </summary>
155169
/// <value>The menu handler.</value>
170+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
156171
public IContextMenuHandler MenuHandler { get; set; }
157172
/// <summary>
158173
/// Implement <see cref="IRenderProcessMessageHandler" /> and assign to handle messages from the render process.
159174
/// </summary>
160175
/// <value>The render process message handler.</value>
176+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
161177
public IRenderProcessMessageHandler RenderProcessMessageHandler { get; set; }
162178
/// <summary>
163179
/// Implement <see cref="IFindHandler" /> to handle events related to find results.
164180
/// </summary>
165181
/// <value>The find handler.</value>
182+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
166183
public IFindHandler FindHandler { get; set; }
167184

168185
/// <summary>
@@ -174,21 +191,25 @@ public IRequestContext RequestContext
174191
/// needing to override the logic in OnGotFocus. The implementation in
175192
/// DefaultFocusHandler relies on very detailed behavior of how WinForms and
176193
/// Windows interact during window activation.</remarks>
194+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
177195
public IFocusHandler FocusHandler { get; set; }
178196
/// <summary>
179197
/// Implement <see cref="IDragHandler" /> and assign to handle events related to dragging.
180198
/// </summary>
181199
/// <value>The drag handler.</value>
200+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
182201
public IDragHandler DragHandler { get; set; }
183202
/// <summary>
184203
/// Implement <see cref="IResourceHandlerFactory" /> and control the loading of resources
185204
/// </summary>
186205
/// <value>The resource handler factory.</value>
206+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
187207
public IResourceHandlerFactory ResourceHandlerFactory { get; set; }
188208
/// <summary>
189209
/// Implement <see cref="IGeolocationHandler" /> and assign to handle requests for permission to use geolocation.
190210
/// </summary>
191211
/// <value>The geolocation handler.</value>
212+
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
192213
public IGeolocationHandler GeolocationHandler { get; set; }
193214

194215
/// <summary>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// Copyright © 2010-2017 The CefSharp Authors. All rights reserved.
2+
//
3+
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
4+
5+
using System.Collections;
6+
using System.ComponentModel;
7+
using System.Drawing;
8+
using System.Reflection;
9+
using System.Resources;
10+
using System.Windows.Forms.Design;
11+
12+
namespace CefSharp.WinForms
13+
{
14+
public class ChromiumWebBrowserDesigner : ControlDesigner
15+
{
16+
protected override void OnPaintAdornments(System.Windows.Forms.PaintEventArgs pe)
17+
{
18+
//NOTE: Removed until a better image can be found, add image as Embedded Resource and update name below
19+
//var assembly = Assembly.GetAssembly(typeof(ChromiumWebBrowserDesigner));
20+
21+
//using (var logo = assembly.GetManifestResourceStream("CefSharp.WinForms.CefSharpLogo.png"))
22+
//using (var img = Image.FromStream(logo))
23+
//{
24+
// pe.Graphics.DrawImage(img, 0, 0);
25+
//}
26+
27+
using(var font = new Font("Arial", 16))
28+
using (var stringFormat = new StringFormat
29+
{
30+
// Create a StringFormat object with the each line of text, and the block
31+
// of text centered on the page.
32+
Alignment = StringAlignment.Center,
33+
LineAlignment = StringAlignment.Center
34+
})
35+
{
36+
pe.Graphics.DrawString("ChromiumWebBrowser", font, Brushes.Black, pe.ClipRectangle, stringFormat);
37+
}
38+
39+
base.OnPaintAdornments(pe);
40+
}
41+
42+
protected override void PreFilterProperties(IDictionary properties)
43+
{
44+
//Remove some of the default properties from the designer
45+
//they don't have much meaning for the browser
46+
//Probably more that can be removed/tweaked
47+
properties.Remove("BackgroundImage");
48+
properties.Remove("BackgroundImageLayout");
49+
properties.Remove("Text");
50+
51+
properties.Remove("Font");
52+
properties.Remove("ForeColor");
53+
properties.Remove("BackColor");
54+
properties.Remove("RightToLeft");
55+
56+
base.PreFilterProperties(properties);
57+
}
58+
}
59+
}

0 commit comments

Comments
 (0)