Mam dość dużą (szerokość) C# WinForms aplikacji, która używa System.Windows.Forms.Label
wewnątrz System.Windows.Forms.Panel
jako markiza.Etykieta przypadkowo znika po pewnej długości
A System.Timers.Timer
aktualizuje pozycję Label
po zderzeniu.
int new_X_location = (label.Location.X + distance_invariant) % modulo;
label.Location = new Point(new_X_location, label.Location.Y);
Funkcjonalność namiotu nie jest kwestia, kiedy zmienić pole Label.Text
etykieta znika!
string some_string = working_function_that_returns_string();
label.Text = some_string; //disappears!
Wydaje się być ograniczone do długości około 2100 znaków lub tak, gdy rozmiar czcionki jest duży (24pt
). Gdy jest mniejszy (10pt
), ciąg może być znacznie dłuższy (label.Text.Length >= 4200
).
string some_string = working_function_that_returns_string();
label.Text = some_string.SubString(0,2000); //it's still visibile here.
...
label.Text = some_string.SubString(0,2200) //it's not visible!
Nie jestem pewien, czy ma do czynienia z szerokością ograniczeń lub ograniczenia rozmiaru czcionki
lub pozycjonowania szerokości formy.
. Pozycjonowanie jest poprawne przy mniejszych rozmiarach czcionek i krótszych łańcuchach. Dlatego nie jest to błąd pozycjonowania.
mógłbyś pisać odpowiedni kod i/lub zdjęcia swojego problemu? – 3aw5TZetdf
Nigdy nie używaj System.Timers.Timer do robienia czegokolwiek ze sterowaniem. Ustaw właściwość CheckForIllegalCrossThreadCalls na wartość true. –
Zajmuję się tym z 'InvokeRequired' i' .Invoke() 'dziękuję. Nie ma żadnych problemów w tym zakresie. –