如何在选择项目后使组合框保持打开状态?

时间:2011-02-13 08:58:41

标签: c# .net winforms combobox

如何在C#中选择项目后使组合框保持打开状态?

我想这样做,因为它实际上是一个带有清单的组合框,所以我可以选择几个项目。

5 个答案:

答案 0 :(得分:5)

使用ListBox代替,因为ComboBox通过其核心设计执行该行为。

ListBox给出了类似的效果(因此它仍处于打开状态)并启用多项选择。

答案 1 :(得分:4)

使用ListBox代替ComboBox。你想做什么(即使在用户选择了一个选项之后保持ComboBox打开)也会出现异常和意外的行为。

更新:我认为这个示例可以让你做你想做的事情(这是一个多选列表,只占用一个控件的形式):

http://www.codeguru.com/csharp/csharp/cs_controls/treeview/article.php/c15373/

答案 2 :(得分:4)

如果您仍然希望允许用户编写自己的选项,您仍然可以使用DropBox,只需将DropDownStyle属性设置为simple。您将获得与ListBox类似的东西,但顶部有一个TextBox,用户可以在其中编写somwthing。

答案 3 :(得分:1)

此功能在.NET 3.0及更高版本中可用。使用ComboBox.StaysOpenOnEdit属性

答案 4 :(得分:0)

虽然我意识到这个问题是针对winforms的,但请允许我为wpf求助者提供答案(实际上我来到这里)。

只需在组合框中输入这样的内容即可。

<Grid>
    <ComboBox Width="1" Height="1" IsDropDownOpen="{Binding ElementName=TButton,Path=IsChecked,Mode=TwoWay}">
        <Grid Width="200" Height="400" Background="BlanchedAlmond" Margin="-5" IsHitTestVisible="True">
            <Button Background="Transparent"></Button> <--------- This is the equivalent of a e.handled
            <StackPanel>
                <Button Content="Button 1"/>
                <Button Content="Button 1"/>
                <Button Content="Button 1"/>
                <Button Content="Button 1"/>
            </StackPanel>
        </Grid>
    </ComboBox>
   <ToggleButton x:Name="TButton" Content="Drop" MaxHeight="40" MaxWidth="40"/>
</Grid>

快速而肮脏的修复,以获得体面,轻松的下拉控件。

单击组合框项目时,实际上单击隐藏按钮,组合保持打开状态。

我尝试过最直接的可见矩形,但没有骰子。这样就可以了。

注意


应该用完全剥离按钮的样式替换不可见的背景(当鼠标结束或执行单击时)。

此外,删除字体图标/路径而不是 drop 会很不错。 :)

道歉再次张贴在这里。我一直在寻找一个快速下拉控制的地方,有0个外部依赖(popup赢了)并且所有我偶然发现的都是荒谬的(不必要的)复杂的实现。我希望这会引导某人走向正确的方向!

祝你好运!

修改 一个简单的不透明度0会做。 DOH ...