In my VSIX extension I created a DialogWindow
-based dialog which contains 2 editable ComboBox
es:
dialog.xaml
<code><ComboBox Name="HeaderFilter" TextBoxBase.TextChanged="HeaderFilterChangedEventHandler" IsEditable="True"/>
<ComboBox Name="ImplementationFilter" TextBoxBase.TextChanged="ImplementationFilterChangedEventHandler" IsEditable="True"/>
</code>
<code><ComboBox Name="HeaderFilter" TextBoxBase.TextChanged="HeaderFilterChangedEventHandler" IsEditable="True"/>
<ComboBox Name="ImplementationFilter" TextBoxBase.TextChanged="ImplementationFilterChangedEventHandler" IsEditable="True"/>
</code>
<ComboBox Name="HeaderFilter" TextBoxBase.TextChanged="HeaderFilterChangedEventHandler" IsEditable="True"/>
<ComboBox Name="ImplementationFilter" TextBoxBase.TextChanged="ImplementationFilterChangedEventHandler" IsEditable="True"/>
dialog.cs
:
<code>public partial class Dialog : DialogWindow
{
private void HeaderFilterChangedEventHandler(object sender, EventArgs e)
{
ImplementationFilter.Text += "1";
}
private void ImplementationFilterChangedEventHandler(object sender, EventArgs e)
{
HeaderFilter.Text += "2";
}
}
</code>
<code>public partial class Dialog : DialogWindow
{
private void HeaderFilterChangedEventHandler(object sender, EventArgs e)
{
ImplementationFilter.Text += "1";
}
private void ImplementationFilterChangedEventHandler(object sender, EventArgs e)
{
HeaderFilter.Text += "2";
}
}
</code>
public partial class Dialog : DialogWindow
{
private void HeaderFilterChangedEventHandler(object sender, EventArgs e)
{
ImplementationFilter.Text += "1";
}
private void ImplementationFilterChangedEventHandler(object sender, EventArgs e)
{
HeaderFilter.Text += "2";
}
}
And I had found that typing in either of these controls doesn’t cause an infinite recursion. For example, typing a single symbol in HeaderFilter
causes the following call trace:
<code>HeaderFilterChangedEventHandler()
ImplementationFilterChangedEventHandler()
stop at next HeaderFilterChangedEventHandler call
</code>
<code>HeaderFilterChangedEventHandler()
ImplementationFilterChangedEventHandler()
stop at next HeaderFilterChangedEventHandler call
</code>
HeaderFilterChangedEventHandler()
ImplementationFilterChangedEventHandler()
stop at next HeaderFilterChangedEventHandler call
Which C#
feature stops the recursion and when can I rely on it?