C# Birden Fazle Replace İşlemi
-
Arkadaşlar ufak bir program için klavyeden girilen değerleri alıyorum hook ile. Yalnız şöyle bir sorun çıkıyor numelock bölümünde rakamları grdiğimde 1 yyerine a , 2 yerine b , 3 yerince c şeklinde harfler çıkıyor.
Normal harfleri girince veya harf grubunun üstündeki rakamları girince doğru olarak sonuç alıyorum. char ile değer aldım fakat yine de numelock ta ki rakamları girince a , b c giri küçük harflerle dönüş sağlanıyor. Bende replace ile küçük a yerine 1 getir diyorum güzel şekilde çalışıyor. Fakat birden fazla replace kullanınca son replace yi alıyor ama ilki çalışmıyr..
Aşağıdaki kod bölümünde c harfini 3 e çeviriyor fakat b yi 2 ye döndürmüyor.. Bunu çözmek için tek satırda birden fazla replace kullanabilir miyim ya da replace dışında bir yol var mıdır ?
string a; a = ((char)e.KeyValue).ToString().Replace("a","1"); a = ((char)e.KeyValue).ToString().Replace("b", "2"); a = ((char)e.KeyValue).ToString().Replace("c", "3"); // textBox1.Text += ((char)e.KeyValue).ToString().Replace("a","1" ,"b","2","c","3"); textBox1.Text += a.ToString();form1 in tüm kodları bu sayfada => http://paste.ubuntu.com/13226270/
-
teamviewer ver hocam bakalım, şimdi biraz uygunum.. normalde 1,2,3 diye gelmemesi lazım. A nın ascii karşılığı 65 ..
-
-
crafty bunu yazdı
select de mantıklı değil hocam, bir dizi tamamlanır, 1. index e karşılık A değeri gelecek şekilde verilir..
dizi = {"-","A","B","C" ..}
dizi[(int)((char)e.KeyValue)]
tarz bir şey ile dizi[1], A yı vermiş oluyor.. ama dediğim gibi bir yanlışlık var, a yerine 1 gelmemesi lazım
-
(char)e.KeyValue bu ne olarak geliyor ?(char)e.KeyValue.ToString() bu ne olarak geliyor ?typecast illa char mı olmak zorunda (c# bilmediğimden), ascii değerleri mi geliyor ? -
Cevap yazan arkadaşların hepsine teşekkür ederim. Sağolsun unbalanced , pc ye bağlanıp sorunu halletti. Kullanılan kodlar aşağıdadır , başkasına lazım olursa diye ekliyorum.
private static char? karkter(KeyEventArgs e) { bool firstChance = false; ; byte[] keyStates = new byte[256]; InputLanguage inputLanguage = InputLanguage.CurrentInputLanguage; const byte keyPressed = 0x80; keyStates[(int)((Keys)e.KeyCode & Keys.KeyCode)] = keyPressed; keyStates[(int)Keys.ShiftKey] = (((Keys)e.KeyCode & Keys.Shift) == Keys.Shift) ? keyPressed : (byte)0; keyStates[(int)Keys.ControlKey] = (((Keys)e.KeyCode & Keys.Control) == Keys.Control) ? keyPressed : (byte)0; keyStates[(int)Keys.Menu] = (((Keys)e.KeyCode & Keys.Alt) == Keys.Alt) ? keyPressed : (byte)0; StringBuilder sb = new StringBuilder(10); int ret = ToUnicodeEx((Keys)e.KeyCode, 0, keyStates, sb, sb.Capacity, 0, inputLanguage.Handle); if (ret == 1) return sb[0]; if (ret == -1) { if (firstChance) { } return null; } return null; } [DllImport("user32.dll", CharSet = CharSet.Unicode)] private static extern int ToUnicodeEx(Keys wVirtKey, uint wScanCode, byte[] lpKeyState, StringBuilder pwszBuff, int cchBuff, uint wFlags, IntPtr dwhkl); #endregion
