कैसे को खोजने के लिए एक toolstripitem अपने नाम के आधार पर किया जा रहा है एक चर है और फिर परिवर्तन की जाँच के मूल्य यह

0

सवाल

मैं एक ContextMenuStrip कहा जाता है: DGVContextStrip इसकी प्रदर्शित किया जाता है जब उपयोगकर्ता सही पर क्लिक करता है, मेरे datagridview.

कि MenuStrip शामिल हैं एक आइटम कहा जाता है AddUpgradeTagToolStripMenuItem जिसमें उप आइटम(dropdownitems), इन उप आइटम के सभी कर रहे हैं के साथ नाम का एक संख्या में उनके नाम है । उदाहरण के लिए: Add1ToolStripMenuItem, Add2ToolStripMenuItem, Add3ToolStripMenuItem.... और इतने पर, जब तक Add25ToolStripMenuItem.

जब एक उपयोगकर्ता सही क्लिक करता है, पर Datagridview, मैं चाहता हूँ अगर जाँच करने के लिए एक सेल शामिल हैं, संख्या "1" तो फिर अगर यह होता है बनाने के लिए Add1ToolStripItem.checked = true

मुझे लगा कि मैं पाश के माध्यम से संख्या 1 से 25, और प्रत्येक पाश की जाँच करें अगर सेल 1 में शामिल है और अगर यह सच है, परिवर्तन की जाँच मूल्य के मेनू आइटम । कुछ की तरह...

For i = 1 to 25
  If DataGridView1.SelectedRows(0).Cells("Text_Field").Value.ToString.Contains(i) then
  CType("Add" & i & "ToolStripMenuItem", ToolStripMenuItem).Checked = True

Next

लेकिन यह काम नहीं करता है, चतुर्थ उदाहरण देखा है कि ऑनलाइन नियंत्रण का उपयोग.विधि मिल लेकिन मैं नहीं मिल सकता है कि काम करने के लिए का उपयोग करें. उदाहरण के लिए

Dim ControlName As String = "Add" & i & "ToolStripMenuItem"
CType(Me.Controls.Find(ControlName, True), ToolStripMenuItem).Checked = True

किसी भी विचार कैसे, मैं यह काम करने के लिए? मुझे लगता है मैं कर सकता का इस्तेमाल किया है 25 तब और अगर बयान, लेकिन मैं एक तरह से चाहता था करने के लिए कोड रखने तक neater है.

1

सबसे अच्छा जवाब

1

के ToolStripItem नहीं है एक नियंत्रण करने के लिए एक के लिए खोज में एक Control.ControlCollection. आप की जरूरत खोज करने के लिए एक ToolStripItemCollection जहां यह है.

बस की तरह Control.ControlCollection.Find विधि, ToolStripItemCollection.Find विधि प्रदर्शन कर सकते हैं एक गहरी खोज के लिए एक आइटम ।

उदाहरण के लिए, अपने मामले में:

Dim itemName As String = $"Add{i}ToolStripMenuItem"
Dim tsmi = yourContextMenuStrip.Items.
    Find(itemName, True).
    OfType(Of ToolStripMenuItem).
    FirstOrDefault()

If tsmi IsNot Nothing Then
    tsmi.Checked = True
End If

वैकल्पिक रूप से, अगर आप पहले से ही पता है कि लक्ष्य आइटम में से एक है AddUpgradeTagToolStripMenuItem ड्रॉप डाउन आइटम है, तो आप क्या कर सकते हैं:

Dim itemName As String = $"Add{i}ToolStripMenuItem"
Dim tsmi = DirectCast(AddUpgradeTagToolStripMenuItem, ToolStripMenuItem).
    DropDownItems.OfType(Of ToolStripMenuItem).
    FirstOrDefault(Function(x) x.Name.Equals(itemName, StringComparison.OrdinalIgnoreCase))

If tsmi IsNot Nothing Then
    tsmi.Checked = True
End If

मामले में आप की जरूरत है की जांच करने के लिए केवल एक आइटम संग्रह से:

Dim itemName As String = $"Add{i}ToolStripMenuItem"

For Each tsmi In DirectCast(AddUpgradeTagToolStripMenuItem, ToolStripMenuItem).
    DropDownItems.OfType(Of ToolStripMenuItem)

    If tsmi.Name.Equals(itemName, StringComparison.OrdinalIgnoreCase) Then
        tsmi.Checked = True
    Else
        tsmi.Checked = False
    End If
Next
2021-11-12 18:27:29

धन्यवाद , आपका पहला विकल्प मेरे लिए काम किया. मैं वास्तव में नहीं मिल सकता दूसरा विकल्प काम करने के लिए, यह आसान नहीं होगा संकलित मन आप Visual Studio नहीं पहचान में किसी भी त्रुटि कोड तो मैं यकीन नहीं कर रहा हूँ क्यों यह नहीं होगा संकलन.
Andy Andromeda

@AndyAndromeda आप का स्वागत कर रहे हैं. दूसरा विकल्प के रूप में त्रुटि, मैं नहीं जानता । यह मेरे लिए काम करता है.
dr.null

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में