C# 如何从按钮中包含选项卡控件
我有下面的代码块为这个块道歉C# 如何从按钮中包含选项卡控件,c#,wpf,tabcontrol,C#,Wpf,Tabcontrol,我有下面的代码块为这个块道歉 <Canvas HorizontalAlignment="Left" Height="439" VerticalAlignment="Top" Width="1171" Canvas.Left="10" Canvas.Top="10" Margin="0,0,0,-1" > <TabControl Height="419" Canvas.Left="10" Canvas.Top="10" Width="1151"> &
<Canvas HorizontalAlignment="Left" Height="439" VerticalAlignment="Top" Width="1171" Canvas.Left="10" Canvas.Top="10" Margin="0,0,0,-1" >
<TabControl Height="419" Canvas.Left="10" Canvas.Top="10" Width="1151">
<TabItem x:Name="MainTab" Header="Main">
<Grid>
<Canvas HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="741" Canvas.Left="55" Canvas.Top="118" Margin="10,91,0,0">
<Controls:Tile Title="Add Shift"
TiltFactor="2"
Width="100" Height="100"
Count="1" Margin="0" Click="TileTabControl">
</Controls:Tile>
<Controls:Tile Title="Recorded Shifts"
TiltFactor="2"
Width="136" Height="100"
Count="2" Margin="0" Canvas.Left="105">
</Controls:Tile>
<Controls:Tile Title="Details Of Pay"
TiltFactor="2"
Width="136" Height="100"
Count="3" Margin="0" Canvas.Left="246">
</Controls:Tile>
<Controls:Tile Title="Account Settings"
TiltFactor="2"
Width="158" Height="100"
Count="4" Margin="0" Canvas.Left="387">
</Controls:Tile>
<Controls:Tile Title="View Shifts By Month"
TiltFactor="2"
Width="191" Height="100"
Count="5" Margin="0" Canvas.Left="550">
</Controls:Tile>
</Canvas>
</Grid>
</TabItem>
<TabItem x:Name="RecordedShifts" Header="Recorded Shifts">
<Grid Background="#FFE5E5E5"/>
</TabItem>
<TabItem x:Name="PayDetails" Header="Pay Details">
<Grid Background="#FFE5E5E5"/>
</TabItem>
<TabItem x:Name="AccountSettings" Header="Account Settings">
<Grid Background="#FFE5E5E5"/>
</TabItem>
<TabItem x:Name="ShiftsByMonth" Header="Shifts By Month">
<Grid Background="#FFE5E5E5"/>
</TabItem>
<TabItem x:Name="NewShift" Header="New Shift ">
<Grid Background="#FFE5E5E5"/>
</TabItem>
</TabControl>
</Canvas>
然后将切换到正确的选项卡。我觉得如果这种方法是可行的,它将最大限度地减少重复的功能空白,这将有一个目的,即切换到不同的选项卡
我试过:
Count="1" Margin="0" Click="TileTabControl(MainTab)">
它返回:
错误1单击=TileTabControltest无效。
“AddNewShiftTileClicktest”不是有效的事件处理程序方法名称。
只有生成的类或代码隐藏类上的实例方法有效
我曾研究过谷歌如何按照这些思路做一些事情,但从中我发现了一些基本问题,这些问题涉及如何将tab控件从它自己的控件更改为tab控件,它会大量生成以下代码片段:
private void TileTabControl(object sender, RoutedEventArgs e,string U)
{
//MessageBox.Show(U.ToString());
U.IsSelected = true;
}
TabControl.Tabs[TabNumber].IsSelected=true;
当试图修改并包含到我的当前代码集时,结果是无效的
有一种基本方法,即为每个Tile单击切换选项卡创建一个新的事件处理程序,但我觉得这会给后端C编码带来混乱
是否有任何不同的方法或方案可以实现,以最小化重复的事件处理程序以执行单一目的?似乎我已经找到了解决方法,在进一步添加选项卡控件之前,我做了以下更改:
<Controls:Tile Title="Add Shift"
TiltFactor="2"
Width="100" Height="100"
Count="1" Margin="0" Tag="NewShift" Click="TileTabControl">
</Controls:Tile>
它将Sender对象强制转换为一个按钮,该按钮允许我在tag元素中解析值,并在文本框中转换为string&打印输出。经过数据处理后,大致如下所示:
private void TileTabControl(object sender, RoutedEventArgs e)
{
var Tab = (Button)sender;
//MessageBox.Show(Type.Tag.ToString());
switch (Tab.Tag.ToString())
{
case "NewShift":
break;
case "RecordedShifts":
break;
case "DetailsOfPay":
break;
case "AccountSettings":
break;
case "ShiftsByMonth":
break;
}
}
var Type = (Button)sender;
MessageBox.Show(Type.Tag.ToString());
private void TileTabControl(object sender, RoutedEventArgs e)
{
var Tab = (Button)sender;
//MessageBox.Show(Type.Tag.ToString());
switch (Tab.Tag.ToString())
{
case "NewShift":
break;
case "RecordedShifts":
break;
case "DetailsOfPay":
break;
case "AccountSettings":
break;
case "ShiftsByMonth":
break;
}
}