- Hikaru {Aka} Yuuki のブログ - http://www.hikaruyuuki.com -
Menampilkan Tooltip/Hint Text dari Menu Item di Status Bar
Posted By Adikara Putra (Hikaru Yuuki) On 6日 6月 2011年 @ 14:19 In Pemrograman | No Comments
Bila kita menggunakan Windows Explorer atau program lainnya, biasanya kita akan melihat teks petunjuk (hint) di status bar ketika kita pointer mouse menyorot di suatu item menu. Hal ini akan membantu usability dari suatu aplikasi dengan memberikan dukungan pengguna berupa petunjuk (hint).
Di C# untuk menampilkan teks tooltip/hint yang sudah kita set di tiap Menu Item tidak serta merta akan langsung tampil di Status Bar (di .NET kita kenal dengan Status Strip). Di Delphi dengan mudah menampilkan teks hint di status bar dengan memanfaatkan event Application.OnHint seperti berikut:
procedure TForm1.ShowHint(Sender: TObject); begin StatusBar1.SimpleText:=Application.Hint; end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnHint:=ShowHint; end;
Berhubung saya sendiri juga masih terbilang baru di C# WinForms dan belum mengetahui cara yang efisien dan lebih mudah supaya teks hint dapat ditampilkan di Status Strip, langkah-langkah yang saya gunakan adalah traverse/enumerate tiap item menu dan menugaskan event handler pada event MouseEnter dan MouseLeave apabila mempunyai tooltip text.
//constructor Form1
public Form1()
{
InitializeComponent();
InitializeMenuHint();
}
private void InitializeMenuHint()
{
foreach (ToolStripMenuItem item in menuStrip1.Items)
{
TraverseMenuItemHint(item);
}
}
private void MenuHint_Enter(object sender, EventArgs e)
{
statusStrip1.Text = (sender as ToolStripMenuItem).ToolTipText;
//bila membuat Status Label di Status Strip gunakan di bawah ini
//toolStripStatusLabel1.Text = (sender as ToolStripMenuItem).ToolTipText;
}
private void MenuHint_Leave(object sender, EventArgs e)
{
statusStrip1.Text = "";
//bila membuat Status Label di Status Strip gunakan di bawah ini
//toolStripStatusLabel1.Text = "";
}
private void TraverseMenuItemHint(ToolStripMenuItem element)
{
for (int i = 0; i < element.DropDownItems.Count; i++)
{
if (!(element.DropDownItems[i] is ToolStripSeparator))
{
ToolStripMenuItem item = element.DropDownItems[i] as ToolStripMenuItem;
if (item.ToolTipText != "")
{
item.MouseEnter += MenuHint_Enter;
item.MouseLeave += MenuHint_Leave;
}
TraverseMenuItemHint(item);
}
}
}
UPDATE:
Cara di atas hanya berfungsi untuk menampilkan tooltip ketika mouse sedang menyorot menu item, ketika menggunakan keyboard tentunya tidak berfungsi. Oleh karena itu saya membuat cara lain yang lebih sederhana supaya dapat menampilkan tooltip text di status bar.
Langkah-langkah yang saya lakukan:
ToolStripMenuItem di dalam Form<nama_form> yang menggunakan ToolStripMenuItemHint yang akan dijalankan ketika menu item sedang dipilihMenu_Hint di FormSystem.Windows.Forms.ToolStripMenuItem di Form<nama_form>.designer.cs menjadi ToolStripmenuItem (dari internal class yang dibuat tadi).Source code lengkapnya seperti berikut ini
public partial class FormMain : System.Windows.Forms.Form
{
internal class ToolStripMenuItem : System.Windows.Forms.ToolStripMenuItem
{
public event EventHandler Hint;
protected virtual void OnHint(EventArgs e)
{
if (Hint != null)
Hint(this, e);
}
public override bool Selected
{
get
{
if (base.Selected == true)
{
OnHint(new EventArgs());
}
return base.Selected;
}
}
}
public FormMain()
{
InitializeComponent();
InitializeMenuHint();
}
private void InitializeMenuHint()
{
foreach (ToolStripMenuItem item in MainMenu.Items)
{
TraverseMenuItemHint(item);
}
}
private void MenuHint_Hint(object sender, EventArgs e)
{
statusStrip1.Text = (sender as ToolStripMenuItem).ToolTipText;
//bila membuat Status Label di Status Strip gunakan di bawah ini
//toolStripStatusLabel1.Text = (sender as ToolStripMenuItem).ToolTipText;
}
private void TraverseMenuItemHint(ToolStripMenuItem element)
{
for (int i = 0; i < element.DropDownItems.Count; i++)
{
if (!(element.DropDownItems[i] is ToolStripSeparator))
{
ToolStripMenuItem item = element.DropDownItems[i] as ToolStripMenuItem;
if (item.ToolTipText != "")
{
item.Hint += MenuHint_Hint;
}
TraverseMenuItemHint(item);
}
}
}
}Article printed from Hikaru {Aka} Yuuki のブログ: http://www.hikaruyuuki.com
URL to article: http://www.hikaruyuuki.com/blog/menampilkan-tooltiphint-text-dari-menu-item-di-status-bar.html
URLs in this post:
[1] Your Ad Here: http://www.adbrite.com/mb/commerce/purchase_form.php?opid=1784967&afsid=1
[2] Ambil Status (User Timeline) dari Twitter: http://www.hikaruyuuki.com/blog/ambil-status-user-timeline-dari-twitter.html
[3] Buat WinForms Application Beserta Versi Console-nya: http://www.hikaruyuuki.com/blog/buat-winforms-application-jadi-satu-dengan-versi-console-nya.html
Click here to print.
Copyright © 2011 Hikaru {Aka} Yuuki のブログ. All rights reserved.