c# - للصف - مشاريع الفيجوال بيسك جاهزة




كيف يمكنني العثور على موضع المؤشر في مربع نص؟ C# (6)

في أي حدث تقترح أن أسجل المتغير؟ غادر؟

حاليا لدي:

private void comboBoxWildCard_SelectedIndexChanged(object sender, EventArgs e)
{
    textBoxSt1.Focus();
    textBoxSt1.Text.Insert(intCursorPos, comboBoxWildCard.SelectedItem.ToString());

}

private void textBoxSt1_Leave(object sender, EventArgs e)
{
    intCursorPos = textBoxSt1.SelectionStart;
}

التسجيل في الحدث ترك يعمل ولكن النص لا يحصل إدراجها، وأنا في عداد المفقودين شيئا؟

أوبديت: لقد احتاجت للنص TextBoxSt1.Text =

textBoxSt1.Text = textBoxSt1.Text.Insert(intCursorPos, comboBoxWildCard.SelectedItem.ToString());

شكرا لكم جميعا.

شكر

لدي مربع نص وينفورمز القياسية وأريد إدراج نص في موضع المؤشر في النص. كيف يمكنني الحصول على موقف المؤشر؟

شكر


جيمس، انها غير فعالة جدا أن تحتاج إلى استبدال السلسلة بأكملها عندما تريد فقط لإدراج بعض النص في موقف المؤشر.

وسيكون الحل الأفضل:

textBoxSt1.SelectedText = ComboBoxWildCard.SelectedItem.ToString();

عندما لا يكون لديك شيء محدد، سيؤدي ذلك إلى إدراج النص الجديد في موضع المؤشر. إذا كان لديك شيء محدد، فسوف يحل هذا النص محل النص الذي تريد إدراجه.

لقد وجدت هذا الحل من موقع إغيدكاف .


تريد التحقق من الخاصية SelectionStart من TextBox .


بغض النظر عما إذا كان يتم تحديد أي نص، تمثل الخاصية سيلكتيونستارت الفهرس في النص حيث يجلس كريت. حتى تتمكن من استخدام String.Insert لحقن بعض النص، مثل هذا:

myTextBox.Text = myTextBox.Text.Insert(myTextBox.SelectionStart, "Hello world");

هنا هو تحقيق عملي، ألوينغ لكتابة أرقام فقط، مع استعادة آخر صالح نص الكتابة النص:

XAML:

<TextBox
      Name="myTextBox" 
      TextChanged="OnMyTextBoxTyping" />

الرمز وراء:

private void OnMyTextBoxTyping(object sender, EventArgs e)
{
    if (!System.Text.RegularExpressions.Regex.IsMatch(myTextBox.Text, @"^[0-9]+$"))
    {
        var currentPosition = myTextBox.SelectionStart;
        myTextBox.Text = new string(myTextBox.Text.Where(c => (char.IsDigit(c))).ToArray());
        myTextBox.SelectionStart = currentPosition > 0 ? currentPosition - 1 : currentPosition;
    }
}

لديك للحفاظ على الخاصية SelectionStart في متغير، ثم عند الضغط على الزر، تحول التركيز مرة أخرى إلى مربع النص. ثم قم بتعيين الخاصية SelectionStart إلى واحد في المتغير.





cursor-position