如何在C#中选择项目后使组合框保持打开状态?
我想这样做,因为它实际上是一个带有清单的组合框,所以我可以选择几个项目。
答案 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 ...