2010-06-12 20 views
7

के साथ सूचीदृश्य क्या सूचीदृश्य के लिए कॉपी-पेस्ट जोड़ने का कोई आसान तरीका है, या क्या मुझे इसके बजाय DataGridView पर स्विच करना चाहिए?कॉपी-पेस्ट

मेरा आवेदन एक एड्रेस बुक की तरह है, इसमें ईमेल, नंबर इत्यादि हैं जहां कॉपी पेस्ट उपयोगी होगा।

उत्तर

1

यह मैनुअल कॉपी और पेस्ट, बस KeyDown के लिए एक ईवेंट हैंडलर में डाल करने के लिए बहुत मुश्किल नहीं है (या शायद यह KeyPress याद कर सकते हैं नहीं लेकिन काफी यकीन है कि यह उनमें से एक है) और जाँच e.KeyCode को देखकर क्या कुंजी दबाने और जांचें कि e.Control सत्य है या नहीं। यदि यह x में से एक है, c या v क्लिपबोर्ड से लिखने/पढ़ने के लिए बस Clipboard.SetText या Clipboard.GetText पर कॉल करें।
Clipboard कक्षा के एमएसडीएन दस्तावेज के लिए here देखें।

आप इसे पूरा करने के लिए ListView पर कॉपी और पेस्ट के साथ एक संदर्भ मेनू जोड़ सकते हैं।

+0

उस के साथ समस्या मैं केवल, पूरी पंक्ति कॉपी करने के लिए प्रबंधन जब तक कि वहाँ है एक सेल के चयन के लिए कुछ साफ चाल है। – Zubirg

+0

@Zubirg: हाँ, मैं भूल गया था कि आपके पास 'ListView' में वास्तव में सेल्स नहीं हैं, तो' DataGridView' पर स्विच करना आसान हो सकता है। हालांकि, अगर आप 'लिस्ट व्यू' के साथ रहना चाहते हैं तो आप उस पर क्लिक करके 'क्लिक' और 'माउसडाउन' ईवेंट को संभालने की तरह कुछ कर सकते हैं, यह गणना करने के लिए कि सबिटैम पर क्लिक किया गया था और उसके बाद उस उपनिवेश के 'बैककोलर' को चुनने के लिए इसे चुनने के लिए और फिर आप उस सबिटिम के लिए कॉपी और पेस्ट संभाल सकते हैं। आपको आइटम पर 'UseItemStyleForSubItems = false;' सेट करना सुनिश्चित करना होगा, अन्यथा रंग उप-उपनामों पर नहीं दिखाए जाएंगे। –

11

नीचे दिए गए उदाहरण क्लिपबोर्ड आदेश की एक प्रति के रूप में Ctrl-C, और प्रतियां सभी चयनित पंक्तियों से दूसरे स्तंभ के मूल्य संभालता है:

private void resultsListView_KeyUp(object sender, KeyEventArgs e) 
    { 
     if (sender != resultsListView) return; 

     if (e.Control && e.KeyCode == Keys.C) 
      CopySelectedValuesToClipboard(); 
    } 

    private void CopySelectedValuesToClipboard() 
    { 
     var builder = new StringBuilder(); 
     foreach (ListViewItem item in resultsListView.SelectedItems) 
      builder.AppendLine(item.SubItems[1].Text); 

     Clipboard.SetText(builder.ToString()); 
    } 

संदर्भ:

  1. What is the KeyChar for Ctrl+C and Ctrl+V in C# पाने के लिए कुंजी और उचित घटना हैंडलर।
  2. Copy ListView to Clipboard in VB.NET, C#, and VB6 क्लिपबोर्ड पर ListView की प्रतिलिपि बनाने के पूर्ण उदाहरण के लिए।
+0

अच्छा समाधान, मुझे बस 'कीडाउन' घटना के साथ ऐसा करना पड़ा। 'कीपअप' काम नहीं कर सका, क्योंकि 'सी' दबाते समय यह सूची बॉक्स में पहली प्रविष्टि को स्वत: चयन कर रहा था, जो' सी' से शुरू हुआ था, जो मेरे मल्टीइलेक्शन को केवल एक ही में प्रस्तुत करता था। – derFunk

0

मेरी आवश्यकता क्लिपबोर्ड पर धारावाहिक संख्याओं की एक सूची की प्रतिलिपि बनाने के लिए एक बटन जोड़ना था। मैं सामान्य फैशन में बटन जोड़ा और फिर निम्न विधि कहा:

private void btnClipboard_Click(object sender, EventArgs e) 
{ 
    String clipText = string.Empty; 
    foreach (ListViewItem item in lstSerials.Items) 
    { 
     clipText += item.SubItems[0].Text; 
     clipText += Environment.NewLine; 
    } 
    if (!String.IsNullOrEmpty(clipText)) 
    { 
     Clipboard.SetText(clipText); 
    } 
}