Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C++CLI / VB .Net / .Net-Framework » Bitfrage C# und RichTextBox

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.11.2006, 17:14 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Hi,

ich hab einen Text formatiert in einer RichTextBox.
Ich habe "Bold" gesetzt im Style und will es nun wieder entfernen. Wie mach ich das (bitweise).
Hinzufügen tu ich ja mit

C++:
this.contentEdit.SelectionFont = new Font(this.contentEdit.SelectionFont, this.contentEdit.SelectionFont.Style | FontStyle.Bold);

Aber wie entferne ich das bold aus this.contentEdit.SelectionFont.Style wieder ?
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.11.2006, 17:39 Uhr
ao

(Operator)


So würde mans in C++ machen, geht das vielleicht?

C++:
... this.contentEdit.SelectionFont.Style & ~FontStyle.Bold);

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.11.2006, 23:52 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Ich hatte das so gehabt, aber eine else vergessen, so das es danach sofort wieder auf bold gesetzt wurde. Für die die keine Erklärung wussten, wieso, reich ich das mal nach:
Hier zeige ich mal kurz, wie italic(kursiv), underline(unterstrichen), bold(fett), normal und strikeout(durchgestrichen) aufgebaut sein könnten und wieso man dann "bold" beispielsweise so abzieht:

C++:
0000 == normal
0001 == bold
0010 == strikeout
0100 == italic
1000 == underline


So, das & gibt jetzt zurück, was in beiden identisch ist. Also wäre, wenn man bold und strikeout hat und italic und bold, wäre bold gleich. Also würde 0001 zurückgegeben werden

C++:
if((0011 & 0101) == 0001) { /* true */ }

Zur veanschaulichung:

C++:
0011
0101
----
0001


Das gibt also die bits zurück,die an beiden Stellen gesetzt sind.
Nun, was macht das ~ ?
~ negiert das ganze. Gesetzte bits (1) werden nicht gesetzt (0) und eben umgekehrt.

C++:
if(~0001 == 1110) { /* true */ }

Das heißt dann konkret für den Fall:
alle bits sind gesetzt -> 1111
Nun will ich bold abziehen mit -> 00001
Dann soll am Schluß 1110 rauskommen. Das geht, wie schon gesagt mit:

C++:
1111 & ~0001

aussehen tut das dann so:

C++:
~0001 == 1110

Nun wird alles ausgegeben, was mit 1111 gleich ist

C++:
1111
1110
----
1110 <- das was wir haben wollten



Hoffe das ist halbwegs verständlich für alle anderen Leser
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C++CLI / VB .Net / .Net-Framework ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: