Einstellen des selectedTab auf einem Property
-
21-08-2019 - |
Frage
Weiß jemand, wie programmatisch das ausgewählte PropertyTab auf einem Property in .NET Framework auf? Die selectedTab Eigenschaft ist nicht einstellbar, was verständlich ist, da die Dokumentation anzeigt, sollten Sie keine Instanzen von PropertyTabs Erstellung werden sich. Allerdings kann ich nicht ein entsprechendes Verfahren zu finden scheinen zu rufen noch Eigentum an der Property Instanz, um den Reiter aus dem Code zu ändern, zB SelectTab (Typ tabType) / int SelectedTabIndex {gesetzt; }. Irgendwelche Ideen?
Lösung
Poster Daniel hatte es fast. Hier ist, was tatsächlich funktioniert, wenn du dies auf Ihre eigene Unterklasse von Property anwenden:
public int SelectedTabIndex
{
set
{
Type pgType = typeof(PropertyGrid);
BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance;
ToolStripButton[] buttons = (ToolStripButton[]) pgType.GetField("viewTabButtons", flags).GetValue(this);
pgType.GetMethod("SelectViewTabButton", flags).Invoke(this, new object[] { buttons[value], true });
}
}
Wie Daniel sagt, das ist schlechte Form und völlig ungestützt, aber es so lange funktioniert, wie Sie müssen keine Sorgen über Cross-Domain-Zugriffsberechtigungen.