jak ze stringa ustawić FontStyle ?

0

Pobieram informacje o ustawionym foncie:

string s_FName = textBox1.Font.Name;
string s_FSize = textBox1.Font.Size.ToString();
FontStyle F_S = textBox1.Font.Style;
string s_FStyle = F_S.ToString();

i teraz, chciałbym to załadować do fontu i wykonać:

textBox1.Font = new Font(s_FName, s_FSize, s_FStyle);

I tu mam problem z s_FStyle - C# żąda zmiennej typu FontStyle i nie przyjmuje stringa s_FStyle.
Pojęcia nie mam, jak to skonwertować - podpowiedzcie coś?

Pozdrawiam,
Jan

0

FontStyle to typ wyliczeniowy (enum). W funkcji w trzecim parametrze musisz napisać tak: FontStyle. i wtedy zobaczysz podpowiedzi np. Bold, Italic.
Musisz też zastanowić się nad samym logicznym aspektem tego: typy string i FontStyle są zupełnie różne i niezgodne, więc to trochę tak jakbyś próbował obiekt człowiek skonwertować na obiekt żelazko (albo pralkę).

0

Oto i rozwiązanie, które zastosowałem (ale szukam czegoś dynamicznego i w jednym wierszu):

switch (jaki_styl) //I love this kure****!
{
case "Regular":
fs = FontStyle.Regular;
break;

                case "Bold":
                    fs = FontStyle.Bold;
                    break;

                case "Bold, Italic":
                    fs = FontStyle.Bold|FontStyle.Italic;
                    break;

                case "Italic":
                    fs = FontStyle.Italic;
                    break;

                case "Underline":
                    fs = FontStyle.Underline;
                    break;

                case "Strikeout":
                    fs = FontStyle.Strikeout;
                    break;
            }
0
JanF napisał(a):

Pojęcia nie mam, jak to skonwertować - podpowiedzcie coś?

Po co takie dziwne konwersje robisz?

Zrób tak:
string s_FName = textBox1.Font.Name;
float s_FSize = textBox1.Font.Size;
FontStyle F_S = textBox1.Font.Style;

textBox1.Font = new Font(s_FName, s_FSize, F_S);

I po problemie.
Nie rozumiem po co zmieniać typ na string? Jak coś jest typu float, to powinno być typu float. Jak jest typu FontStyle, to powinno pozostać z takim typem. A jak coś jest typu string, to powinno pozostać stringiem, a nie być konwertowane na int. Czasami konwersja jest potrzebna, ale w tym przypadku nie widzę takiej potrzeby.

0
Igor1981 napisał(a):
JanF napisał(a):

Pojęcia nie mam, jak to skonwertować - podpowiedzcie coś?

Po co takie dziwne konwersje robisz?
Zrób tak:
string s_FName = textBox1.Font.Name;
float s_FSize = textBox1.Font.Size;
FontStyle F_S = textBox1.Font.Style;

textBox1.Font = new Font(s_FName, s_FSize, F_S);
I po problemie.

Problem w tym, że robię szyfrowany edytor tekstowy (bardzo ciekawy algorytm szyfrowania VMPC) i chcę przechowywać font edycji tekstu - muszę FontStyle zrzucić do stringa i ze stringa uaktywniać font.

0
JanF napisał(a):

Problem w tym, że robię szyfrowany edytor tekstowy (bardzo ciekawy algorytm szyfrowania VMPC) i chcę przechowywać font edycji tekstu - muszę FontStyle zrzucić do stringa i ze stringa uaktywniać font.

W takim razie zrób to tak:
FontStyle F_S = textBox1.Font.Style;
string s_FStyle = F_S.ToString();
FontStyle F_S2 = (FontStyle)Enum.Parse(typeof(FontStyle), s_FStyle);

0

@JanF, po co Ci to s_F w nazwach zmiennych?

1 użytkowników online, w tym zalogowanych: 0, gości: 1