}

//鼠标移动触发拖动
void Window_PreviewMouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{
if (Mouse.LeftButton == MouseButtonState.Pressed && _pressedPosition != e.GetPosition(this))
{
_isDragMoved = true;
DragMove();
}
}

//鼠标弹起屏蔽消息
void Window_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (_isDragMoved)
{
_isDragMoved = false;
e.Handled = true;
}
}
}


参考链接:[c# wpf 实现窗口任意区域点击拖动\_wpf 拖动窗体-CSDN博客]( )


##  3.实现一个透明、无边框、鼠标穿透的WPF窗体


参考链接:[Simple WPF:实现一个透明、无边框、鼠标穿透的WPF窗体 - 知乎 (zhihu.com)]( )")


[一步一步实现WPF透明化窗口\_wpf透明窗体-CSDN博客]( )



//设置 AllowsTransparency=“True” WindowStyle=“None” Background=“Transparent”


## 4.去除标题栏



//设置 WindowStyle =“None”


##  5.按钮渐变色  鼠标悬停时按钮不变色  控件重叠



<Window.Resources>
//设置grid的背景色

 <!--按钮渐变色-->
 <LinearGradientBrush x:Key="Brush2" StartPoint="0,0" EndPoint="0,1">
     <LinearGradientBrush.GradientStops>
         <GradientStop Offset="0" Color="#FF03A795" />
         <GradientStop Offset="1" Color="#FF03786B" />
     </LinearGradientBrush.GradientStops>
 </LinearGradientBrush>
 <LinearGradientBrush x:Key="Brush3" StartPoint="0,0" EndPoint="0,1">
     <LinearGradientBrush.GradientStops>
         <GradientStop Offset="0" Color="#FF03A795" />
         <GradientStop Offset="1" Color="#FF03786B" />
     </LinearGradientBrush.GradientStops>
 </LinearGradientBrush>
 <Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
     <Setter Property="Template">
         <Setter.Value>
             <ControlTemplate TargetType="{x:Type Button}">
                 <Border Background="{TemplateBinding Background}">
                     <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                 </Border>
             </ControlTemplate>
         </Setter.Value>
     </Setter>
     <Style.Triggers>
         <Trigger Property="IsMouseOver" Value="True">
             <Setter Property="Background" Value="{x:Null}"/>
         </Trigger>
     </Style.Triggers>
 </Style>

</Window.Resources>

//调用

6. grid 分割线

       <Grid.RowDefinitions>
           <RowDefinition Height="9*"/>
           <RowDefinition Height="9*"/>
           <RowDefinition Height="12*"/>
           <RowDefinition Height="12*"/>
           <RowDefinition Height="24*"/>
           <RowDefinition Height="3*"/>
       </Grid.RowDefinitions>
       <Rectangle Stroke="#FF6F6D6D"  Grid.Row="1"/>
       <Rectangle Stroke="#FF6F6D6D"  Grid.Row="2"/>
       <Rectangle Stroke="#FF6F6D6D" Grid.Row="3"/>
       <Rectangle Stroke="#FF6F6D6D" Grid.Row="4"/>
       <Rectangle Stroke="#FF6F6D6D" Grid.Row="5"/>

7. textblock 样式(渐变色 )

<TextBlock VerticalAlignment="Bottom"  HorizontalAlignment="Left" FontSize="25" FontWeight="Black" Cursor="AppStarting" Height="30">
    <TextBlock.Style>
        <Style  TargetType="{x:Type TextBlock}">
            <Setter Property="Foreground">
                <Setter.Value>
                    <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,0.5">
                        <GradientStop Color="#FF87E1FF" Offset="0.0" />
                        <GradientStop Color="#FF009FFF" Offset="0.5" />
                    </LinearGradientBrush>
                </Setter.Value>
            </Setter>
        </Style>
 </TextBlock.Style><Run Text="抢答器专家"/>
</TextBlock>

//设置字体颜色
 <TextBlock Foreground="#FF03786B">加分</TextBlock>

8.textbox 样式(圆角)

<TextBox VerticalAlignment="Center" HorizontalAlignment="Center" Height="30" Width="60" >
    <TextBox.Resources>
        <Style TargetType="{x:Type Border}">
            <Setter Property="CornerRadius" Value="2"/>
            <Setter Property="BorderBrush" Value="#c1d0dc"/>
        </Style>
    </TextBox.Resources>
</TextBox>

9.button

//设置圆角
<Button.Resources>
    <Style TargetType="{x:Type Border}">
        <Setter Property="CornerRadius" Value="3"></Setter>
    </Style>
</Button.Resources>

//设置阴影
 <Button.Effect>
     <DropShadowEffect BlurRadius="20" ShadowDepth="0" Color="#DADADA" Opacity="0.2"/>
 </Button.Effect>

10.ComboBox

xaml:
<ComboBox Width="80" SelectionChanged="ComboBox_SelectionChanged">
    <ComboBoxItem IsSelected="True">0</ComboBoxItem>
    <ComboBoxItem>5</ComboBoxItem>
    <ComboBoxItem>10</ComboBoxItem>
    <ComboBoxItem>20</ComboBoxItem>
</ComboBox>

//允许编辑  设置IsEditable="True",即前面变成文本框形式
<ComboBox x:Name="AddScoreCombox" Width="80" IsEditable="True">
    <ComboBoxItem>0</ComboBoxItem>
    <ComboBoxItem>10</ComboBoxItem>
    <ComboBoxItem>11</ComboBoxItem>
    <ComboBoxItem IsSelected="True">19</ComboBoxItem>
</ComboBox>




cs:
 private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     int count = Convert.ToInt32(combobox.SelectedValue.ToString().Replace("System.Windows.Controls.ComboBoxItem: ", ""));
    
     SubWindow subWindow = SubWindow.pwindow;
     subWindow.Close();
     SubWindow.hcount = count;
     SubWindow subWindow2 = new SubWindow();
     subWindow2.Show();
 }



//动态生成Items
 for(int i = 1; i <= SubWindow.count; i++)
 {
     combobox.Items.Add(i.ToString());
 }

11.在子窗口控制主窗口动态生成控件时,会出现两个相同的窗口

解决办法:

在主窗口里

 public static SubWindow pwindow = null;

     public SubWindow()
     {
         InitializeComponent();
         pwindow = this;   //将当前窗口给pwindow,方便在setting里使用
     }

在子窗口里,

 SubWindow subWindow = SubWindow.pwindow;
 subWindow.Close();  //关闭上一个窗口

 SubWindow.hcount = count;
 SubWindow subWindow2 = new SubWindow();
 subWindow2.Show();

12.RadioButton

  <RadioButton GroupName="zu" Margin="20,10,0,10" Grid.Row="0"  Content="12" Click="RadioButton_Click"> </RadioButton>
  <RadioButton IsChecked="True" GroupName="zu" Margin="20,10,0,10" Grid.Row="1" Content="34" Click="RadioButton_Click"></RadioButton>


private void RadioButton_Click(object sender, RoutedEventArgs e)
{
    //获取radiobutton的值
    RadioButton radioButton = sender as RadioButton;
    radiobuttoncContent = radioButton.Content.ToString();
    if (radioButton.IsChecked == true)
    {
        SubWindow subWindow = SubWindow.pwindow;
        subWindow.Close();
        SubWindow subWindow2 = new SubWindow();
        subWindow2.Show();

    }
}

13.slider

<WrapPanel Margin="20,70,0,0">
    <TextBlock FontSize="14" LineHeight="12" Foreground="#333333">调整</TextBlock>
    <Slider x:Name = "slider2" Width="90" Minimum = "0" Maximum = "3"  ValueChanged = "slider1_ValueChanged" Margin = "23,0,0,0"></Slider>
    <TextBox x:Name="textbox1" Text="{Binding Textbox1}" Width="25" Height="25" Margin="5,-3,0,0" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"></TextBox>
</WrapPanel>


 public static int buttonSize = 0;

private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
    string val = Convert.ToInt32(e.NewValue).ToString();
    //string msg = String.Format("Current value: {0}", val);
    this.textbox1.Text = val;
    buttonSize =Convert.ToInt32(val);
    SubWindow subWindow = SubWindow.pwindow;
    subWindow.Close();
    SubWindow subWindow2 = new SubWindow();
    subWindow2.Show();
}

14.动态生成控件

 private void CreateCanvas3()
 {
     LinearGradientBrush brush3 = (LinearGradientBrush)this.FindResource("Brush3");
     LinearGradientBrush brush2 = (LinearGradientBrush)this.FindResource("Brush2");
     Canvas canvas = new Canvas()
     {
         Margin = new Thickness(30 + buttonsize * 3 + Llength, 40 + buttonsize * 4 + hlength * 2, 90 + buttonsize * 3 + Llength, 40 + buttonsize * 3 + hlength * 2)
     };
     //成绩
     Border border = new Border()
     {
         BorderThickness = new Thickness(2),
         BorderBrush = System.Windows.Media.Brushes.WhiteSmoke,
         Background = brush3,
         CornerRadius = new CornerRadius(4),
         Margin = new Thickness(30 + buttonsize * 6, 20 + buttonsize * 6, 2 + buttonsize * 6, 0+buttonsize * 6),
         Height = 35 + buttonsize * 4,
         Width = 80 + buttonsize * 5
     };
    
     Label label = new Label()
     {
         Content = "123",
         FontSize = 14 + buttonsize * 2,
         Margin = new Thickness(15, 1, 15, 0),
         HorizontalContentAlignment = HorizontalAlignment.Center,
         VerticalContentAlignment = VerticalAlignment.Center,
     };
     //名称
     Border border2 = new Border()
     {
         BorderThickness = new Thickness(2,0,2,2),
         BorderBrush = System.Windows.Media.Brushes.WhiteSmoke,
         Background = brush3,
         CornerRadius = new CornerRadius(0,0,4,4),
         Margin = new Thickness(30 + buttonsize * 6, 53 + buttonsize * 6, 0 + buttonsize * 6, 0 + buttonsize * 6),
         Height = 35 + buttonsize * 4,
         Width = 80 + buttonsize * 5
     };
     Label label2 = new Label()
     {
         Content = "456",
         FontSize = 14 + buttonsize * 2,
         Margin = new Thickness(18, 1, 15, 0),
         HorizontalContentAlignment = HorizontalAlignment.Center,
         VerticalContentAlignment = VerticalAlignment.Center,
     };
     border.Child = label;
     border2.Child = label2;
     //组号
     Border border1 = new Border()
     {
         BorderThickness = new Thickness(2),
         BorderBrush = System.Windows.Media.Brushes.WhiteSmoke,
         Background = brush2,
         CornerRadius = new CornerRadius(50),
         Margin = new Thickness(15 + buttonsize * 4, 17 + buttonsize * 4, 0, 0),
         Height = 42 + buttonsize * 2,
         Width = 40 + buttonsize * 2
     };
     Label label1 = new Label()
     {
         Content = "1",
         FontSize = 14 + buttonsize * 2,
         HorizontalContentAlignment = HorizontalAlignment.Center,
         VerticalContentAlignment = VerticalAlignment.Center,
         Margin = new Thickness(0, 4, 0, 0),
         MinWidth = 40
     };
     border1.Child = label1;
     canvas.Children.Add(border);
     canvas.Children.Add(border2);
     canvas.Children.Add(border1);
     canvaswidth = 110;
     buttonwrap.Children.Add(canvas);
 }

15.控件右击事件

右击事件是MouseRightButtonUp

//windows.resource里定义一个ContextMenu
<ContextMenu x:Key="ContextMenu">
    <MenuItem Name="setting" Header="设置" Click="MenuItem_Click">
    </MenuItem>
</ContextMenu>


//右击事件是MouseRightButtonUp,右击之后出现ContextMenu里的设置


![img](https://img-blog.csdnimg.cn/img_convert/7a77c8ebc62e4876faaa8727b11102ef.png)
![img](https://img-blog.csdnimg.cn/img_convert/ac4cfdee070207b5580be3cc2217378b.png)
![img](https://img-blog.csdnimg.cn/img_convert/0be910700aa74e74488b952bfe1990e3.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

="设置" Click="MenuItem_Click">
    </MenuItem>
</ContextMenu>


//右击事件是MouseRightButtonUp,右击之后出现ContextMenu里的设置


[外链图片转存中...(img-O2EuL6Pm-1714784839200)]
[外链图片转存中...(img-26ZpFiRl-1714784839201)]
[外链图片转存中...(img-bF4WtE1V-1714784839201)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐