我在 WPF 中有一个 ComboBox,其 ItemsSource 以编程方式设置为列表。我将如何清除事件处理程序中的选择?我试过:
comboBox.SelectedIndex = -1;
comboBox.SelectedItem = null;
comboBox.SelectedValue = null;
comboBox.SelectedValue = "";
它们都没有任何效果。
comboBox.SelectedIndex = -1;
对我有用。
您还在事件处理程序中执行其他操作吗?您使用数据绑定吗?
comboBox.SelectedIndex = -1;
这是要走的路。我不知道为什么它对你不起作用;也许
SelectedIndexChanged
的事件处理程序会更改值?
我发现我还需要添加:
comboBox.Text = "";
清除文字
我想清除另一个
ComboBox
的 DropDownClosed
事件中的 ComboBox
。因此,我在第一个 ComboBox
DropDownClosed
事件中使用了以下代码
private void comboBox1_DropDownClosed(object sender, EventArgs e)
{
this.comboBox.ItemsSource = null;
}
在下面的示例中,我展示了它对我的工作方式,这是针对用户控件中的组合框:
用户控件中的组合框:
<ComboBox x:Name="OFFSE_INI_CMBX" HorizontalAlignment="Left" Margin="26,106,0,0" VerticalAlignment="Top" Height="20" Width="100" DropDownClosed="OFFSE_INI_CMBX_DropDownClosed">
<ComboBoxItem x:Name="NV" Content=" NV" ToolTip="Sub Command Tooltip 1" Height="20" Selected="NV_Selected"></ComboBoxItem>
</ComboBox>
有效的功能
private void OFFSE_INI_CMBX_DropDownClosed(object sender, EventArgs e)
{
this.OFFSE_INI_CMBX.SelectedIndex = -1;
this.OFFSE_INI_CMBX.Text = "";
}
ComboBox.SelectedIndex = -1 对我不起作用,也许是因为我在自定义 ComboBox 中使用自定义 ControlTemplate?无论如何,重置 ItemsSource 确实有效。我从行为中调用此。
var items = comboBox.ItemsSource;
comboBox.ItemsSource = null;
comboBox.ItemsSource = items;
首先,您必须在选择更改功能中执行此操作
private void combobox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (combobox.SelectedIndex == -1)
{
combobox.SelectedIndex.ToString();
}
else
{
string datacombo=(combobox.SelectedValue.ToString());
}
}
之后在任何地方使用combobox.SelectedIndex=-1。现在我正在使用另一个组合框来选择选择更改
private void cbocombobox2_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
combobox.SelectedValue=null;
combobox.SelectedIndex = -1;
}
这对我有用,alhamdulillah