Great job with the app. However, I'm going to nitpick your code.
LINQ was introduced in 3.0 (or was it actually 3.5?) to give you easier XML reading/writing. Learn to use it. (There's absolutely no need to use the old XmlReader/Writer.)
Example (From ArmoryDataMobile/Main.cs):
Code:
var guildInfo = from g in xmlDoc.Elements("guild") select g;
guildInfo now holds an IEnumerable<XElement> of the 'guild' element stuff. (Hard to make a really good... erm... explanation for that. But I think you get it.)
You're using WinForms, so you should really begin to use the Settings that is built in. (This will not only save you tons of time, but tons of headaches. Not to mention buttloads of code, as you'll never have to write any event code to save a t/f for a checkbox setting.)
From a maintainability standpoint: refactor your code so your GUI code is
JUST GUI code. (Minus the obvious required code for special logic.)
In other words: If the code isn't GUI specific, put it in it's own logical class.
Example:
Code:
Armory Viewer
- Classes
-- ArmoryProfile <Handles the 'bulk' reading and provides the following as instances>
---Tooltip (possibly in a Dictionary<ItemSlot, string> for URLs to the icon)
---Character info (name/race/bg group/rep/etc. Fairly self explanatory.)
---Guild (should hold a 'pointer' to another armory profile, not actual data. 1 entry per guildie)
---Talents (read when needed)
Then it's as simple as passing around an ArmoryProfile object, and displaying whatever info on the GUI.
Also, for the localization issues; Use UTF-8 encoding. ASCII doesn't support the required characters. (Plus, WoW uses UTF-8 for everything [in and out of game])