2009-03-02 12 views
6

टेक्स्टबॉक्स में, जब आप उस पर क्लिक करते हैं तो आप ब्लिंकिंग कर्सर के प्रदर्शन को कैसे रोक सकते हैं?टेक्स्टबॉक्स में ब्लिंकिंग कर्सर को रोकें

मैंने कुछ मंचों में पढ़ा है कि एक विशेष एपीआई को कॉल किया गया है, लेकिन जब मैंने इसे अपने कोड में करने की कोशिश की, तो एक त्रुटि दिखाई गई। यदि संभव हो तो कृपया इस उद्देश्य के लिए पूरा कोड प्रदान करें और मुझे बताएं कि कोई विशेष घटना है जहां कोड निष्पादित किया जाना चाहिए।

यह टेक्स्टबॉक्स एक फॉर्म विंडो का हिस्सा है जो एक लैन मैसेंजर के सिमुलेशन के लिए बना रहा है। मैं सी # का उपयोग कर रहा हूँ। Google टॉक के समान होने के लिए फ़ॉर्म में दो टेक्स्टबॉक्स हैं। ऊपरी टेक्स्टबॉक्स पर चमकते कर्सर को प्रदर्शित करना रोकने के लिए वांछनीय होगा।

मैंने कोशिश की:

[DllImport("user32")] 
private static extern bool HideCaret(IntPtr hWnd); 
public void HideCaret() { HideCaret(TextBox1.Handle); } 

मैं त्रुटि मिलती है: "। DllImport नहीं पाया जा सका"

+0

इस टेक्स्ट बॉक्स और क्या भाषा में बनाया गया था ओएस एक्स पर एक देशी कोको पाठ बॉक्स के बारे में अधिक जानकारी प्रदान करें।? एक HTML वेब पेज पर एक फॉर्म में एक टेक्स्टबॉक्स? Win32 ऐप में एक टेक्स्टबॉक्स? एक gtk2 टेक्स्टबॉक्स? एक बीओएस टेक्स्टबॉक्स? आदि – Nathan

+0

वैसे यह टेक्स्टबॉक्स एक फॉर्म विंडो का हिस्सा है जो एक लैन मैसेंजर के सिमुलेशन के लिए बना रहा है। मैं C# का उपयोग कर रहा हूं। इस फ़ॉर्म में Google टॉक के समान होने के लिए दो टेक्स्टबॉक्स हैं और ऊपरी टेक्स्टबॉक्स पर ब्लिंकिंग कर्सर को प्रदर्शित करना रोकने के लिए वांछनीय होगा। – Avik

+0

अपनी नई जानकारी के साथ प्रश्न संपादित करें - अगर लोग टिप्पणियों में हैं तो लोग इसे भी नहीं देख पाएंगे। –

उत्तर

0

ReadOnlyTextBox से true पर संपत्ति सेट करें।

अधिक इस सवाल का जवाब: Read-only textbox in C#

6

आप पाठ बॉक्स पर संपादन अस्वीकृत करने के लिए चाहते हैं, सेट यह सच तक केवल पढ़ने के संपत्ति है।

आप संपादन अनुमति देना चाहते हैं, लेकिन अभी भी कैरट छिपाते हैं, तो फोन Win32 एपीआई बिल्कुल as specified:

[System.Runtime.InteropServices.DllImport("user32.dll")] 
static extern bool HideCaret(IntPtr hWnd); 

... 

HideCaret(myTextBox.Handle); 
+0

यह कोड है कि मैं भी पहले से आया था। समस्या यह है कि एक त्रुटि प्रदर्शित की जा रही है: "त्रुटि प्रकार या नामस्थान नाम 'DllImport' नहीं मिला (क्या आप एक निर्देश या एक असेंबली संदर्भ का उपयोग कर रहे हैं?) " क्या कोई विशिष्ट संदर्भ बनाया गया है ?? – Avik

+0

यह पूरी तरह से काम करता है, धन्यवाद! – Mike

+0

शीर्ष पर कथन का उपयोग जोड़ें। using System.Runtime.InteropServices; shahkalpesh

0

VB.NET कोड

Imports System.Runtime.InteropServices 

Public Class xxxxxxxxxxxxxxxxxxxxxx 

<DllImport("user32.dll")> 
    Private Shared Function HideCaret(ByVal hwnd As IntPtr) As Boolean 
    End Function 

............... 

Private Sub txtNotePreview_MouseMove(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtNotePreview.MouseMove, txtNotePreview.KeyPress 
     HideCaret(txtNotePreview.Handle) 
    End Sub 
+1

आपको शायद थोड़ा आगे समझा जाना चाहिए। समाधान प्रदान करना उत्तर का केवल एक हिस्सा है। – albertjan

3

हाय, इस कोड को

प्रयास करें
public class CustomTextBox:System.Windows.Forms.TextBox 
{ 
    [System.Runtime.InteropServices.DllImport("user32")] 
    private static extern bool HideCaret(IntPtr hWnd); 

    public CustomTextBox() 
    { 
     TabStop = false; 

     MouseDown += new System.Windows.Forms.MouseEventHandler(CustomTextBox_MouseDown); 
    } 

    void CustomTextBox_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
    { 
     HideCaret(this.Handle); 
    } 
} 
2

यदि आप टेक्स्टक के अंदर hideCaret फ़ंक्शन डालते हैं हेंज घटना, यह समस्या को हल करेगा।

[DllImport("user32.dll")] 
    static extern bool HideCaret(IntPtr hWnd); 

    private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     HideCaret(textBox1.Handle); 
    } 
1

मैं पता लगाने के लिए एक TextBox पर क्रोम का वेब पता बार (आंशिक रूप से) अनुकरण करने के लिए कैसे शोध किया और दोनों यहाँ और इस one से कोड एकत्र हुए।

यह ठीक काम करता है, पहले क्लिक, ब्लिंकिंग कैरेट दिखाए बिना सभी टेक्स्ट का चयन करता है, यह चाल है कि आप चयनित टेक्स्ट पर दूसरी बार क्लिक करते समय कैरेट स्वयं को दिखाएं, इस प्रकार क्रोम का वेब पता बार व्यवहार करता है । कोड यह रहा:

[DllImport("user32.dll")] 
    static extern bool HideCaret(IntPtr hWnd); 

    private void textBox2_Enter(object sender, EventArgs e) 
    { 
     // Kick off SelectAll asyncronously so that it occurs after Click 
     BeginInvoke((Action)delegate 
     { 
      HideCaret(textBox2.Handle); 
      textBox2.SelectAll();    
     });   
    } 
+0

यह वास्तव में काफी रोचक और उपयोगी है! +1 – Kaitlyn

संबंधित मुद्दे