如何在 C# UWP 中获取 Tabpage 的文本框?
How can I get the Textbox of a Tabpage in c# UWP?
我是 c# UWP 的新手,我尝试制作一个 tabcontrol,效果很好。
现在我试图获取tabcontrol的当前文本框,但是没有成功。
我已经在 winforms 中完成了,效果很好:
private RichTextBox GetRichTextBox()
{
RichTextBox richtext= null;
TabPage tab = tabControl1.SelectedTab;
if (tab != null)
{
richtext = tab .Controls[0] as RichTextBox;
}
return richtext ;
}
所以我不知道如何在 UWP 中做同样的事情。
如果有人能帮助我,我会很高兴:D
编辑:
NuGet的导入
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
这里是来自 MainPage.xaml 的选项卡控件:
<!--Tabcontrol-->
<muxc:TabView HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
AddTabButtonClick="TabView_AddTabButtonClick"
TabCloseRequested="TabView_TabCloseRequested"
Name="EditTabControl">
<muxc:TabView.TabStripHeader>
<Grid x:Name="ShellTitlebarInset" Background="Transparent" />
</muxc:TabView.TabStripHeader>
<muxc:TabView.TabStripFooter>
<Grid x:Name="CustomDragRegion" Background="Transparent" />
</muxc:TabView.TabStripFooter>
</muxc:TabView>
下面是我如何使用文本框创建标签页
void NewDocument(string text, string DocTitle)
{
var newTab = new muxc.TabViewItem();
newTab.Header = DocTitle;
TextBox tb = new TextBox();
Thickness margin = tb.Margin;
margin.Top = 40;
tb.Text = text;
tb.Margin = margin;
tb.HorizontalAlignment = HorizontalAlignment.Stretch;
tb.VerticalAlignment = VerticalAlignment.Stretch;
tb.AcceptsReturn = true;
tb.FontSize = 20;
tb.IsSpellCheckEnabled = true;
tb.IsHandwritingViewEnabled = true;
tb.IsTapEnabled = true;
ScrollViewer.SetVerticalScrollBarVisibility(tb, ScrollBarVisibility.Auto);
ScrollViewer.SetHorizontalScrollBarVisibility(tb, ScrollBarVisibility.Auto);
newTab.Content = tb;
EditTabControl.TabItems.Add(newTab);
EditTabControl.SelectedIndex = EditTabControl.TabItems.Count - 1;
}
您可以尝试先获取TabViewItems的列表,然后再根据索引获取具体的TabItem。然后就可以得到TabViewItem的内容,应该是TextBox Control。
您可以参考以下代码:
//get the tabitems array
var TabItems = EditTabControl.TabItems.ToArray();
//get the tabitem based on the index.
MUXC.TabViewItem targetItem = (MUXC.TabViewItem)TabItems[0];
//get the textbox you added to the tabitem
TextBox content = (TextBox)targetItem.Content;
//change the text
content.Text = "This is test";
我是 c# UWP 的新手,我尝试制作一个 tabcontrol,效果很好。 现在我试图获取tabcontrol的当前文本框,但是没有成功。
我已经在 winforms 中完成了,效果很好:
private RichTextBox GetRichTextBox()
{
RichTextBox richtext= null;
TabPage tab = tabControl1.SelectedTab;
if (tab != null)
{
richtext = tab .Controls[0] as RichTextBox;
}
return richtext ;
}
所以我不知道如何在 UWP 中做同样的事情。
如果有人能帮助我,我会很高兴:D
编辑:
NuGet的导入
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
这里是来自 MainPage.xaml 的选项卡控件:
<!--Tabcontrol-->
<muxc:TabView HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
AddTabButtonClick="TabView_AddTabButtonClick"
TabCloseRequested="TabView_TabCloseRequested"
Name="EditTabControl">
<muxc:TabView.TabStripHeader>
<Grid x:Name="ShellTitlebarInset" Background="Transparent" />
</muxc:TabView.TabStripHeader>
<muxc:TabView.TabStripFooter>
<Grid x:Name="CustomDragRegion" Background="Transparent" />
</muxc:TabView.TabStripFooter>
</muxc:TabView>
下面是我如何使用文本框创建标签页
void NewDocument(string text, string DocTitle)
{
var newTab = new muxc.TabViewItem();
newTab.Header = DocTitle;
TextBox tb = new TextBox();
Thickness margin = tb.Margin;
margin.Top = 40;
tb.Text = text;
tb.Margin = margin;
tb.HorizontalAlignment = HorizontalAlignment.Stretch;
tb.VerticalAlignment = VerticalAlignment.Stretch;
tb.AcceptsReturn = true;
tb.FontSize = 20;
tb.IsSpellCheckEnabled = true;
tb.IsHandwritingViewEnabled = true;
tb.IsTapEnabled = true;
ScrollViewer.SetVerticalScrollBarVisibility(tb, ScrollBarVisibility.Auto);
ScrollViewer.SetHorizontalScrollBarVisibility(tb, ScrollBarVisibility.Auto);
newTab.Content = tb;
EditTabControl.TabItems.Add(newTab);
EditTabControl.SelectedIndex = EditTabControl.TabItems.Count - 1;
}
您可以尝试先获取TabViewItems的列表,然后再根据索引获取具体的TabItem。然后就可以得到TabViewItem的内容,应该是TextBox Control。
您可以参考以下代码:
//get the tabitems array
var TabItems = EditTabControl.TabItems.ToArray();
//get the tabitem based on the index.
MUXC.TabViewItem targetItem = (MUXC.TabViewItem)TabItems[0];
//get the textbox you added to the tabitem
TextBox content = (TextBox)targetItem.Content;
//change the text
content.Text = "This is test";