protected override void OnDrawItem(DrawItemEventArgs e) { if (e.Index == -1) { return; } InstallerResourceLanguage[] langs = InstallerResources.GetAvailableLanguages(); InstallerResourceLanguage lang = langs[e.Index]; e.DrawBackground(); Graphics g = e.Graphics; Rectangle r = e.Bounds; Int32 x = r.X + 2; Int32 y = r.Y + (r.Height / 2) - (lang.Flag.Height / 2); g.DrawImageUnscaled(lang.Flag, x, y); Size ts = TextRenderer.MeasureText(g, lang.LanguageName, SystemFonts.IconTitleFont); Int32 tx = r.X + lang.Flag.Width + 3; Int32 ty = r.Y + (r.Height / 2) - (ts.Height / 2); // TODO: align by baseline, not by the rendered string size // this code works, but it does make the list look funny // if( lang.RightToLeft ) { // tx = r.Width - ts.Width - 3; // } TextRenderer.DrawText(g, lang.LanguageName, SystemFonts.IconTitleFont, new Point(tx, ty), e.ForeColor); e.DrawFocusRectangle(); }
protected override void OnSelectedIndexChanged(EventArgs e) { base.OnSelectedIndexChanged(e); InstallerResourceLanguage lang = SelectedItem as InstallerResourceLanguage; InstallerResources.CurrentLanguage = lang; }
private void __culture_SelectedIndexChanged(object sender, EventArgs e) { InstallerResourceLanguage lang = __culture.SelectedItem as InstallerResourceLanguage; __cultureAttrib.Text = lang.Attribution; Uri uri; if (Uri.TryCreate(lang.AttributionUri, UriKind.Absolute, out uri)) { __cultureAttrib.LinkArea = new LinkArea(0, lang.Attribution.Length); __cultureAttrib.Tag = uri; } else { __cultureAttrib.LinkArea = new LinkArea(0, 0); __cultureAttrib.Tag = null; } }