Это нормально. SetToolTip
метод принимает строку, и он отобразит текст, извлеченный из ресурса на основе текущей культуры при вызове SetToolTip
, и изменение культуры во время выполнения не повлияет на нее. Так вот, поскольку настройка подсказки выполняется в конструкторе вашей кнопки, тогда будет использоваться культура потока в этот момент.
Если вы хотите, чтобы ваша подсказка динамически использовать текущую культуру automatially, в качестве опции можно установить фиктивный текст в качестве всплывающей подсказки (чтобы включить всплывающую подсказку), а затем обработать Popup
события подсказки, присвоить локализованное значение в подсказку:
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);
}
}
Примечания: Если ваша цель не делают подсказки динамически локализуемой и вы хотите только локализуемую подсказку, путь Localizable
свойства Form
работ, идти к дизайнеру вашего ExtendedButton
компонента и установить Localizable
свойства true
, а затем использовать различные тексты подсказок для разных cltures.
Но имейте в виду, что значение не может быть изменено дунально во время выполнения после создания компонента.
Вот пример:
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("fa-IR");
var f = new Form();
f.Controls.Add(new ExtendedButton());
f.Show();
Можете ли вы показать нам, как вы меняете культуру нитей? –