I thought it would be nice to provide some configuration options, such as font family and size, in a desktop application I’ve been working on recently. I also wanted to provide a default option, and have that configured in the app.config file instead of having to recompile the application if I decide to (or get told to) change the font size, bold/un-bold, font family, etc. I couldn’t, however, just set a value in the app settings and add keys with the name and size. I needed to actually define a font setting. But I’d never bothered to do that before. So here’s what I did.
Right-click the project and select Properties, then navigate to the Settings tab and add a new System.Drawing.Font value:
I chose a nice big, bold Arial so it could be seen on a monitor stuck to the wall from across the room.
The value will look something like this in your app.config:
<setting name="DisplayFont" serializeAs="String">
<value>Arial, 15.75pt, style=Bold</value>
Finally, I added a little something like this to the form’s load method to grab the default font…at first:
private void Form1_Load(object sender, EventArgs e)
// set the font
dg1.DefaultCellStyle.Font = Properties.Settings.Default.DisplayFont;
And that uses the default font of my choice, as set in the app.config, every time the application launches. That way I could change the font setting in app.config any time I wanted and not have to recompile the application. That was step one.
In the end, what I ended up doing was using the application level default value in Settings, and adding a user scope font setting also. If the user scoped font value is null or it equals the default application scope font, I use the default font. If the user scope font is different — read by saying something like
System.Drawing.Font a = Settings.Properties.User.MyFontValue;
anyway, if font a is different from font b (from Settings.Properties.Default.DisplayFont), dg1.DefaultCellStyle.Font = a;
And then I provided a font dialog that’s opened up from an option dropdown button and when you pick a font, Settings.Properties.User.MyFontValue is updated…
FontDialog Fdiag = new FontDialog();
if(Fdiag.ShowDialog() != DialogResult.Cancel )
Or something like that. Pretty basic stuff, really, but I haven’t done a whole lot of desktop applications where I actually needed to provide…or save…options for the user…