C# tlacenie znaku z klavesnice
ahojte ako vzdy mam dalsi problem :D
pouzil som na vytlacenie znaku metodu DrawString(..);
ide o to ze mam napr:
private void KeyDown(object sender, ...KeyEventArgs e)
{
string f = Convert.ToString(e.KeyCode);
DrawString(f,.....);
}
.. ale ked napr zadam naklavesnici dvojbodku tak mi to miesto dvojbodky vyhodi samozrejme string OemSemicolon (co je vlastne hodnota dvojbodky prevedena na string) ...
Da sa tento problem riesit aj nejak sikovnejsie kde mi pri zadani dvojbodky napise dvojbodku a nie taku prkotinu? ;)
DIK MOC ;)
Re: C# tlacenie znaku z klavesnice
Mno, nemám nainstalované Visual Studio, takže nemůžu vyzkoušet a můžu být úplně mimo :D, ale nepomohlo by:
http://msdn2.microsoft.com/en-us/lib...r_members.aspx
Re: C# tlacenie znaku z klavesnice
alebo takto .. lepsia otazka ... mam trebars nejaky int .. napr 32 ... a ja chcem tento int prekonvertovat na znak ktory prave cislo 32 charakterizuje ... da sa nieco take?
Re: C# tlacenie znaku z klavesnice
char znak = Convert.ToChar(cislo);
..jsi zkousel?
Re: C# tlacenie znaku z klavesnice
jj ... to som skusal to bolo ako prve co ma napadlo ... teraz som vlastne v tej najlepsej forme .. ked stlacim danu klavesu tak mi vypise jeho ciselnu hodnotu .. napr A ma tusim 65 ... B 66 .. atd ... uz potrebujem len to cislo zase prehodit na znak ale tentokrat na ten realny ktory sa pod tym cislom ukryva ...
Re: C# tlacenie znaku z klavesnice
KeyBoard.cs
Kód:
using System;
using System.Text;
namespace KeyPresDownApp
{
class KeyBoard
{
public KeyBoard ()
{
}
public static void Doubles ()
{
ConsoleKeyInfo cki;
String msg1 = "Bylo stisknuto ";
String msg2 = " (znak '{0}').";
StringBuilder sb = new StringBuilder ();
Boolean suppress = false;
Console.TreatControlCAsInput = true;
Console.WriteLine ("Stiskni CTRL, ALT, SHIFT + Znak");
Console.WriteLine ("Konec ESC");
do
{
sb.Length = 0;
cki = Console.ReadKey (suppress);
sb.Append (msg1);
if(cki.Modifiers != 0)
{
if((cki.Modifiers & ConsoleModifiers.Alt) != 0)
sb.Append ("ALT+");
if((cki.Modifiers & ConsoleModifiers.Shift) != 0)
sb.Append ("SHIFT+");
if((cki.Modifiers & ConsoleModifiers.Control) != 0)
sb.Append ("CTL+");
}
sb.Append (cki.Key.ToString ());
sb.AppendFormat (msg2, cki.KeyChar);
sb.AppendLine ().AppendLine ();
Console.WriteLine ("");
Console.WriteLine (sb.ToString ());
if(cki.KeyChar == '+')
{
if(suppress) suppress = false;
else suppress = true;
}
} while(cki.Key != ConsoleKey.Escape);
}
}
}
KeyBoardTest.cs
Kód:
namespace KeyPresDownApp
{
class KeyBoardTest
{
static void Main (string[] args)
{
KeyBoard.Doubles ();
}
}
}
Re: C# tlacenie znaku z klavesnice
asi sme sa nepochopili co potrebujem ... :(
ide o to ze vlastne potrebujem vytlacit ("nakreslit") stlaceny znak na bitmapu cez metodu DrawString(..). lenze tato metoda pracuje s argumentom typu string a ako nahle pouzijem nieco take ako:
(v udalosti stlacenia klavesy)
string i = Convert.ToString(e.KeyCode);
tak nasledovne ked vytlacim hodnotu i na btmapu tak miesto ; my vytlaci nieco ako OemSemiColon.
vlastne potrebujem do tej hodnoty string i ulozit nie nazov ktory popisuje danu klavesu .. ale .. skutocny stlaceny znak na klavesnici ...
(asi z toho editoru vyhodim font :D )
Re: C# tlacenie znaku z klavesnice
A zkousel jsi vubec, co jsem ti psal?? Naschval jsem to ted zkousel a funguje to imho uple presne tak, jak chces...
char znak = Convert.ToChar(cislo); // z ciselneho kodu dostanes ten spravny tisknutelny ZNAK
pripadne si ho muzes zkonvertovat na string pomoc znak.ToString();
nebo jsme te jeste spatne pochopili? ;)
Re: C# tlacenie znaku z klavesnice
tak si udelejej handler na KeyDown
Kód:
textBox.KeyDown += new KeyDownHandler (textBox_KeyDown);
a v tom eventu
Kód:
private void textBox_KeyDown (object sender, KeyEventArgs arg)
{
arg.KeyCode.ToString ();
//....... dalsi zpracovani (udelat System.Drawing.Graphics)
}
a na 100% ti to vyplivne ten znak ne v ciselnem kodu ale ciste ve stringu :-)
takze ne A = 65, ale A = A
Zkousel jsem to.
Dalsi zpracovani pro graphics trebas tady
Na ty dvojtlacitka bych pouzil ten StringBuilder
V helpu Visual Studia dej serach
Kód:
// Grafika
s-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_fxmclignrl/html/5d2447a9-21a1-4adc-b954-5516f2bb9b2c.htm
//StringBuilder
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref12/html/T_System_Text_StringBuilder.htm
8-)
Re: C# tlacenie znaku z klavesnice
Anduril to je na tom najvacsia sranda ze som to tiez skusal cez ten convert na char ale pri dvojboke mi to vyhadzovalo taku smiesnu znacku ani neviem co to je :D .. tak preto som hladal ine riesenie :)
asi bude chyba niekde inde ked ti to ide a mne to takto hapruje ... no nic koniec koncom sranda musi byt :D este by som sa nahodou nudil :)
Ozzy juuj mockrat dik ;)
Re: C# tlacenie znaku z klavesnice
Re: C# tlacenie znaku z klavesnice
Problem definitivne vyrieseny (konecne :D )
Anduril nedalo mi preco to tebe slo a mne nie cez ten char. Tak ak by mal niekto rovnaky problem u mna bola chyba v udalosti. Pouzil som totiz udalos KeyDown no a v tomto pripade to fungovalo prave takym nespravnym sposobom. Co sa tyka riesenia spociva prave v udalosti KeyPress a nie KeyDown. KeyPress obsahuje priamo vlastnost ToChar ktora to convertuje priamo na skutocny stlaceny znak (medzernik ako medzeru a nie ako string "space", ; nie ako OsmSemiColon ale priamo ako ; atd)
Dakujem velmi vsetkym ktori sa zapojili do tohto problemu.