SetWindowText не меняет свойство контрола

216
11 апреля 2018, 06:53

WinAPI метод SetWindowText не меняет текст кнопки. Причем, если попробовать получить текст через GetWindowText, то вернется, как раз, тот текст, который я пытался задать, а не отображаемый по факту. Забавно, но заголовок формы меняется, в отличии от кнопки, вызов метода из другого потока (с выключенным CheckForIlligalCross) и Invalidate кнопки ожидаемо не дают результата.

Upd. Примеры кода:

Класс WinAPI

[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int GetWindowText(HandleRef hWnd, StringBuilder lpString, int nMaxCount);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool SetWindowText(IntPtr hWnd, [MarshalAs(UnmanagedType.LPTStr)] string lpString);

Класс Window

public static Window Find(IntPtr hwnd)
{
    return new Window()
    {
        Handle = hwnd
    };
}
public string GetText()
{
    int capacity = WinAPI.GetWindowTextLength(new HandleRef(this, Handle)) * 2;
    StringBuilder stringBuilder = new StringBuilder(capacity);
    WinAPI.GetWindowText(new HandleRef(this, Handle), stringBuilder, stringBuilder.Capacity);
    return stringBuilder.ToString();
}
public bool SetText(string text)
{
    return WinAPI.SetWindowText(Handle, text);
}

Код формы:

button1.Click += (s, e) =>
{
    var btn = Window.Find(button1.Handle);
    btn.SetText("hello");
    MessageBox.Show(btn.GetText());
};

Результат на скрине.

READ ALSO
Не открывается cs-ники

Не открывается cs-ники

Всем приветПисал код, села батарея ноутбука, ноут выключился, после того как я загрузил систему по-новой в visual studio написанный мной код открывается...

187
Открыть файл Ворд на c# wpf [требует правки]

Открыть файл Ворд на c# wpf [требует правки]

Добрый вечер, уважаемые знатоки! Прошу Вас, помогите мне

218
C# Работа с структурами

C# Работа с структурами

Объявите структуру Entrant, которая представляет собой информацию о абитуриенте и содержит такие открытые поля:

198
Excel не выводить уведомления при замене

Excel не выводить уведомления при замене

Для замены текста использую

185