Jag märker att jag använder mig av en if-sats väldigt mycket, och ville nu försöka att göra en class av det, för att minska/förenkla mitt kodande. Problemet verkar vara att du skickar med fel typ av parametrar till din metod. Dvs det du skickar med in överrensstämmer inte med vad du deklarerat den att ta emot.. det behöver inte vara fel typ.. det kan vara fel ordning på parametrarna med. Jag märkte att jag glömde hur jag anropar, det blir kanske lättare för dig att ge ett bra svar då. Benni, varför inte förenkla originalkoden istället till Hej Simon, haha, det måste jag testa, såg ju busenkelt ut. Jag svara själv, eftersom jag har lyckats med att lösa det.Göra om if-sats till en class
Orginalkoden ser ut så här:
<code>
if(toolBar1.Buttons[4].Pushed)
{
richTextBoxEx1.SetSelectionBold(true);
}
else
{
richTextBoxEx1.SetSelectionBold(false);
}
</code>
Jag försöker att göra klassen så här:
<code>
public static object formatText(System.Windows.Forms.ToolBarButton button, RichTextBoxEx rtfTrue,RichTextBoxEx rtfFalse)
{
RichTextBoxEx rtf;
if(button.Pushed)
{
rtf=rtfTrue;
}
else
{
rtf=rtfFalse;
}
return rtf;
}
</code>
Error som jag får är:
<code>
E:\C#\Music_Translater\Music_Translater\Music_Translate\Form1.cs(7809): The best overloaded method match for 'Music_Translate.Util.formatText(System.Windows.Forms.ToolBarButton, RichTextBoxEx, RichTextBoxEx)' has some invalid arguments
</code>
Går det överhuvudtaget att göra någonting sådanthär??Sv: Göra om if-sats till en class
Sv:Göra om if-sats till en class
<code>
Music_Translate.Util.formatText(toolBar1.Buttons[4],richTextBoxEx1.SetSelectionBold(true),richTextBoxEx1.SetSelectionBold(false));
</code>
Hjälper det dig?Sv: Göra om if-sats till en class
Jag antar att <b>RichTextBoxEx</b> är en extra richtextbox kontroll som du använder dig av. I din metoddeklaraiton har du anget att du skall skicka med två <b>kontroller</b> av typen RichTextBoxEx och när du anropar metoden så skickar du inte med kontroll objekten (<b>richTextBoxEx1</b> och <b>richTextBoxEx1</b>) utan du skickar med ett eventuellt returvärde från metoden <b>SetSelectionBold</b> på respektive kontroll.
Nu vet jag inte vad SetSelectionBold returnerar .. kanske en <b>bool</b> eller kanskr till och med </b>void</b>. Ovsett så skickar du med fle typer till din metod. Plocka bort anriopen till SetSelectionBold och sköt även detta inna i din metod.Sv: Göra om if-sats till en class
<code>
richTextBoxEx1.SetSelectionBold(toolBar1.Buttons[4].Pushed)
</code>Sv:Göra om if-sats till en class
[REDIGERAT]
Jo det fungerade i switch-sats.
Men inte här(jag tänker kanske fel):
<code>
if (richTextBoxEx1.SelectionFont.Bold == true)
{// Bullet button on toolbar should appear pressed
toolBarButton5.Pushed = true;
}
else
{// Bullet button on toolbar should appear unpressed
toolBarButton5.Pushed = false;
}
//osv
</code>
Den koden ligger i:
private void richTextBoxEx1_SelectionChanged(object sender, System.EventArgs e)
och vad den gör är helt enkelt, om den texten som finns är fet, då trycks knappen in, annars inte.
Nu finns det ett problem med den, därför att om jag skriver ny text, så vill inte knappen för fet text vara inne.
Nu är det inte det enda problemet, om jag avaktivera ovanstående kod, så innebär det att knappen för fet är intryckt, men den text som jag skriver in, är inte fet. Jag kanske lägger det i fel klass, eller gör nåot annat dumt??
Tacksam för tips.Sv: Göra om if-sats till en class
Under richTextBoxEx1_KeyDown la jag in följande kod:
<code>
if(toolBarButton5.Pushed == true)
{
Font oldFont;
Font newFont;
oldFont = this.richTextBoxEx1.SelectionFont;
if(oldFont.Bold)
newFont = new Font(oldFont,oldFont.Style & ~ FontStyle.Bold);
else
newFont = new Font(oldFont,oldFont.Style | FontStyle.Bold);
this.richTextBoxEx1.SelectionFont = newFont;
this.richTextBoxEx1.Focus();
}
</code>
...och gjode sedan så för alla de andra knapparna(kusiv och understuken).
Tack alla ni som har försökt att hjälpa mig.