पर बैकस्पेस का पता लगाना मैं चांदी के वेब ऐप पर काम कर रहा हूं। यह एक मॉड्यूल के साथ बातचीत करता है जो एसएमएस भेजता है। मैं पाठ को 160 तक सीमित करना चाहता हूं और काउंटर दिखा सकता हूं। मैं इसे इस तरह से किया था:KeyDown
public partial class SendSMSView
{
public SendSMSView()
{
InitializeComponent();
ApplyTheme();
}
protected void tbMessage_KeyDown(object sender, KeyEventArgs e)
{
count = 160 - this.tbMessage.Text.Length;
this.lblCount.Content = count.ToString();
}
}
यह बैकस्पेस और हटाना को छोड़कर सभी चाबी के लिए ठीक काम करता है। बेशक यह इस तरह काम करने के लिए बनाया जाता है। मैं इस बारे में अधिक खोदा और अधिभावी keydown घटना की कोशिश की तो मैं निम्नलिखित कोड का टुकड़ा कहा:
public class CustomTextBox : TextBox
{
public CustomTextBox(): base()
{
}
protected override void OnKeyDown(KeyEventArgs e)
{
e.handler=false;
base.OnKeyDown(e);
//this place
}
}
OnKeyDown समारोह में मैं सभी की स्ट्रोक पंजीकृत मिलता है। यहां हैंडलर को झूठी में सेट करने से मदद नहीं मिलती है और फिर भी मैं tbMessage_KeyDow को ट्रिगर करने के लिए बैकस्पेस नहीं प्राप्त कर सकता हूं।
मैं किसी भी तरह से bbMessage_KeyDow फ़ंक्शन को // इस जगह से मजबूती से बैकस्पेस के लिए कॉल करना चाहता हूं।
मैंने एमएसडीएन की खोज की, और पाया कि IsInputKey को वापस लौटने के लिए अतिरंजित किया जा सकता है ताकि किडडाउन भी इसका जवाब दे, लेकिन मेरे ढांचे में न तो IsInputKey और न ही पूर्वावलोकन है। इनपुट कुंजी के रूप में पंजीकृत बैकस्पेस कुंजी प्राप्त करने के लिए या tbMessage_KeyDow को कॉल करने के लिए कोई कामकाज है [जो बहुत क्रूर दृष्टिकोण है]? कृपया मदद करे।
चूंकि आप 'this.tbMessage.Text.Length' बैकस्पेस का उपयोग कर रहे हैं और हटाएं स्ट्रिंग 'टेक्स्ट' में दिखाई देंगे। या आप कुछ और मतलब है? – Stefan
आप [textchanged] का उपयोग क्यों नहीं करते हैं (http://msdn.microsoft.com/en-us/library/system.windows.controls.textbox.textchanged%28v=vs.95%29.aspx) इवेंट की बजाय keydown? प्रत्येक बार – weberik
धन्यवाद बदलते समय टेक्स्टबॉक्स की सामग्री को गिनें। TextChanged थोड़ा झुकाव के बाद, काम किया। – whizzyifti