将组合框作为参数传递给表单

时间:2015-12-25 00:10:22

标签: c# winforms combobox

所以我希望能够将组合框从一种形式传递到另一种形式,因为它是唯一保持不变的东西。当我这样做时,传递正常,有正确的项目,但是当我打开下拉时没有任何项目,任何想法为什么?

3 个答案:

答案 0 :(得分:1)

嗯,我不知道为什么会这样,但你可能会尝试做的是以下几点: 不要只是传入整个组合框,只需传入上一个组合框中的项目,然后在您尝试将其传递给的表单上创建一个新的组合框,然后使用之前作为参数传入的项目填充它。希望这有帮助!

答案 1 :(得分:1)

我现在尝试这样做,它现在包含应该

的项目
'On a shared file'
Public Shared Function GetScrollViewer(depObj As DependencyObject) As ScrollViewer
    If TypeOf depObj Is ScrollViewer Then
        Return TryCast(depObj, ScrollViewer)
    End If

    For i As Integer = 0 To VisualTreeHelper.GetChildrenCount(depObj) - 1
        Dim child = VisualTreeHelper.GetChild(depObj, i)

        Dim result = GetScrollViewer(child)
        If result IsNot Nothing Then
            Return result
        End If
    Next
    Return Nothing
End Function

'on OnNavigatedTo event'
AddHandler GetScrollViewer(LVNot).ViewChanged, AddressOf LVNot_ViewChanged

'At the end of the Main.xaml.vb file'
Private Sub LVNot_ViewChanged()
    If Cab.isUp = True Then
        Cab.goDownSub()
    End If
End Sub

但只是将一个组合框设置为等于另一个组合框不起作用,这对我没有意义

foreach (var loc in locations.Items)
    Location_Selector.Items.Add(loc.ToString());

Location_Selector.SelectedIndex = locations.SelectedIndex;

答案 2 :(得分:0)

传递这样的项目可能更容易:

        List<String> items = new List<string>();
        items.AddRange(comboBox1.Items.Cast<String>());
        int index = comboBox1.SelectedIndex;

        Form2 form2 = new Form2();
        form2.comboBox1.Items.AddRange(items.ToArray<object>());
        form2.comboBox1.SelectedIndex = index;
        form2.Show();

因此,您可以将项目输入列表,然后访问下一个表单上的组合框并将列表添加到其中。这也将复制所选索引。 您可以复制ComboBox,但只复制项目更实用。