これは正常です。 SetToolTip
メソッドは文字列を受け入れ、SetToolTip
を呼び出すときに現在のカルチャに基づいてリソースから抽出したテキストを表示し、実行時にカルチャを変更しても影響はありません。 ボタンのコンストラクタでツールヒントを設定すると、その時点のスレッドのカルチャが使用されます。
あなたのツールヒントが動的にあなたが(ツールチップを有効にする)ツールチップとしてダミーテキストを設定し、ツールチップのPopup
イベントを処理する、ツールヒントにローカライズされた値を割り当てることができ、オプションとして、automatially現在のカルチャを使用する場合:
class ExtendedButton : Button
{
private ToolTip _tooltip = new ToolTip();
public ExtendedButton()
{
_tooltip.Popup += new PopupEventHandler(_tooltip_Popup);
_tooltip.SetToolTip(this, "DUMMYTEXT");
}
void _tooltip_Popup(object sender, PopupEventArgs e)
{
if (_tooltip.GetToolTip(this) != StringResources.MyLocalizedTooltipString)
_tooltip.SetToolTip(this, StringResources.MyLocalizedTooltipString);
}
}
注:あなたの目標は、動的にローカライズツールチップを作っていないとあなただけのローカライズツールチップ、Form
作品のLocalizable
プロパティは、あなたのExtendedButton
コンポーネントのデザイナーに移動し、true
にLocalizable
プロパティを設定し、使用方法をしたい場合異なる仲間のための異なるツールチップテキスト。
ただし、コンポーネントが作成された後、実行時に値が変更されることはありません。ここで
は一例です。
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("fa-IR");
var f = new Form();
f.Controls.Add(new ExtendedButton());
f.Show();
スレッドカルチャーをどのように変更することができますか? –