wpf控件上移下移,调整子集控件显示顺序

news2024/11/28 0:40:28

在这里插入图片描述

页面代码:

<!-- 导出A2,自定义导出设置列,添加时间:2023-8-9 14:14:18,作者:whl;  -->

<Window x:Class="WpfSnqkGasAnalysis.WindowGasExportA2"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfSnqkGasAnalysis"
        mc:Ignorable="d"
        WindowStartupLocation="CenterScreen"
        FontSize="16"
        Title="导出A2,自定义导出设置列" Height="744" Width="800">
    <Window.Resources>
        <Style TargetType="Button" x:Key="sel_button">
            <Setter Property="Margin" Value="13,2"></Setter>
            <Setter Property="Padding" Value="10,2"></Setter>
            <Setter Property="FontSize" Value="16"></Setter>
            <Setter Property="HorizontalContentAlignment" Value="Left"></Setter>
        </Style>
        <Style TargetType="Border" x:Key="boder_order">
            <Setter Property="MinWidth" Value="233"></Setter>
            <!--<Setter Property="BorderBrush" Value="Lime"></Setter>
            <Setter Property="BorderThickness" Value="2"></Setter>-->
            <Setter Property="Margin" Value="20,2"></Setter>
            <Style.Resources>
                <Style TargetType="Label">
                    <Setter Property="FontSize" Value="16"></Setter>
                </Style>
                <Style TargetType="TextBox">
                    <Setter Property="FontSize" Value="16"></Setter>
                </Style>
            </Style.Resources>
        </Style>
        
    </Window.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="70"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid Grid.Row="0"  >
            <Border BorderBrush="Gold" BorderThickness="0,0,0,1" >
                <Grid>
                <Label   HorizontalAlignment="Left" Margin="0,0,0,0" VerticalAlignment="Top">注意:请先点击左侧需要导出的字段,以作为导出列</Label>
                <TextBlock HorizontalAlignment="Left" Margin="70,44,0,0" TextWrapping="Wrap" FontWeight="Bold" Text="勾选导出列" VerticalAlignment="Top" RenderTransformOrigin="0.952,0.48"/>
                    <TextBlock HorizontalAlignment="Left" Margin="376,44,0,0" TextWrapping="Wrap"  FontWeight="Bold" Text="已勾选的导出列" VerticalAlignment="Top"/>
                </Grid>
            </Border>
          
        </Grid>
        <Grid Grid.Row="1">
            <Grid  ShowGridLines="True"  >
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="284"    ></ColumnDefinition>
                    <ColumnDefinition Width="*"   ></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <ScrollViewer Grid.Column="0" VerticalScrollBarVisibility="Auto"   >
                    <StackPanel     x:Name="leftFields" Orientation="Vertical"  Background="#FFFFFF"    >

                        <Button Content="样品编号"   Tag="k338_sample_no" Style="{StaticResource sel_button}" />
                        <Button Content="井号"   Tag="k338_well_no" Style="{StaticResource sel_button}"  />
                        <Button Content="类别"   Tag="k338_cate" Style="{StaticResource sel_button}"  />

                        <Button Content="构建名称"   Tag="k338_build_name" Style="{StaticResource sel_button}" />
                        <Button Content="层位"   Tag="k338_cengwei" Style="{StaticResource sel_button}" />
                        <Button Content="井深(m)"   Tag="k338_jinshen" Style="{StaticResource sel_button}"  />

                        <Button Content="取样位置"   Tag="k338_sampling_location" Style="{StaticResource sel_button}"  />
                        <Button Content="取样温度(℃)"   Tag="k338_samping_temperature" Style="{StaticResource sel_button}"  />
                        <Button Content="取样条件"   Tag="k338_samping_condition" Style="{StaticResource sel_button}" />

                        <Button Content="油压(MPa)"   Tag="k338_oil_pressure" Style="{StaticResource sel_button}" />
                        <Button Content="套压(MPa)"   Tag="k338_casing_pressure" Style="{StaticResource sel_button}" />
                        <Button Content="委托单位"   Tag="k338_client" Style="{StaticResource sel_button}"  />

                        <Button Content="取样时间"   Tag="k338_samping_time" Style="{StaticResource sel_button}"  />
                        <Button Content="分析时间"   Tag="k338_analysis_time" Style="{StaticResource sel_button}"  />
                        <Button Content="分析单位"   Tag="k338_analysis_company_name" Style="{StaticResource sel_button}"  />

                        <Button Content="取样单位"   Tag="k338_samping_company_name" Style="{StaticResource sel_button}" />
                        <Button Content="取样人"   Tag="k338_samping_user" Style="{StaticResource sel_button}"  />

                        <Button Content="分析人"   Tag="k338_analysis_user"  Style="{StaticResource sel_button}"  />
                        <Button Content="审核人"   Tag="k338_checkUser"  Style="{StaticResource sel_button}"  />
                        <Button Content="备注"   Tag="k338_remark"  Style="{StaticResource sel_button}"  />

                        <Button Content="仪器信息"   Tag="k338_instrument_info" Style="{StaticResource sel_button}"  />
                        <Button Content="标准气信息"   Tag="k338_standard_gas_info"  Style="{StaticResource sel_button}"  />

                        <Button Content="1.甲烷(C1,mol%)"   Tag="k338_r_C1"  Style="{StaticResource sel_button}"  />
                        <Button Content="2.乙烷(C2,mol%)"   Tag="k338_r_C2"  Style="{StaticResource sel_button}"  />
                        <Button Content="3.丙烷(C3,mol%)"   Tag="k338_r_C3"  Style="{StaticResource sel_button}"  />

                        <Button Content="4.异丁烷(ic4,mol%)"   Tag="k338_r_ic4"  Style="{StaticResource sel_button}"  />
                        <Button Content="5.正丁烷(nc4,mol%)"   Tag="k338_r_nc4"  Style="{StaticResource sel_button}"  />
                        <Button Content="6.异戊烷(iC5,mol%)"   Tag="k338_r_iC5"  Style="{StaticResource sel_button}"  />

                        <Button Content="7.正戊烷(nC5,mol%)"   Tag="k338_r_nC5"  Style="{StaticResource sel_button}"  />
                        <Button Content="8.己烷(C6,mol%)"   Tag="k338_r_c6"  Style="{StaticResource sel_button}"  />
                        <Button Content="9.硫化氢(H2S,mol%)"   Tag="k338_r_H2s"  Style="{StaticResource sel_button}"  />

                        <Button Content="10.二氧化碳(CO2,mol%)"   Tag="k338_r_CO2"  Style="{StaticResource sel_button}"  />
                        <Button Content="11.氮(N2,mol%)"   Tag="k338_r_N2"  Style="{StaticResource sel_button}"  />
                        <Button Content="12.氦(He,mol%)"   Tag="k338_r_He"  Style="{StaticResource sel_button}"  />
                        <Button Content="13.氢(H2,mol%)"   Tag="k338_r_H2"  Style="{StaticResource sel_button}"  />

                        <Button Content="14.二氧化碳(g/m3)"   Tag="k338_m_CO2"  Style="{StaticResource sel_button}"  />
                        <Button Content="15.硫化氢(mg/m3)"   Tag="k338_m_H2S"  Style="{StaticResource sel_button}"  />
                        <Button Content="16.总硫(mg/m3)"   Tag="k338_m_ZS"  Style="{StaticResource sel_button}"  />

                        <Button Content="17.水露点(℃)"   Tag="k338_m_water"  Style="{StaticResource sel_button}"  />
                        <Button Content="18.临界温度(K)"   Tag="k338_m_linjieTemp"  Style="{StaticResource sel_button}"  />
                        <Button Content="19.压缩因子"   Tag="k338_m_yasuo_yinzi"  Style="{StaticResource sel_button}"  />

                        <Button Content="20.高位发热量(Mj/m3)"   Tag="k338_m_high_heat"  Style="{StaticResource sel_button}"  />
                        <Button Content="21.低位发热量(Mj/m3)"   Tag="k338_m_low_heat"  Style="{StaticResource sel_button}"  />
                        <Button Content="22.相对密度"   Tag="k338_m_density"  Style="{StaticResource sel_button}"  />
                        <Button Content="23.临界压力(MPa)"   Tag="k338_m_linjieYa"  Style="{StaticResource sel_button}"  />

                    </StackPanel>
                </ScrollViewer>
                <Grid Grid.Column="1" Name="grid1"  >
                    <Button Click="Up_click" Content="↑上移" Width="88" HorizontalAlignment="Left"    Margin="311,50,0,0"  VerticalAlignment="Top" Panel.ZIndex="8"/>
                    <Button Click="Down_click" Content="↓下移"  Width="88" HorizontalAlignment="Left" Margin="311,90,0,0" VerticalAlignment="Top" Panel.ZIndex="8"/>
                    <Button Click="AddNewField_click"  Content="新增一列" Width="88" HorizontalAlignment="Left" Margin="311,130,0,0" VerticalAlignment="Top" Panel.ZIndex="8"/>
                    <Button Click="RemoveField_click"  Content="移除" Width="88" HorizontalAlignment="Left" Margin="311,170,0,0" VerticalAlignment="Top" Panel.ZIndex="8"/>
                 
                    <ScrollViewer  VerticalScrollBarVisibility="Auto"  >
                        <StackPanel Name="selected_fields" HorizontalAlignment="Left">
                            <!--<Border Style="{StaticResource boder_order}" GotFocus="Border_GotFocus"  >
                                <DockPanel>                               
                                    <TextBox  Text="井号" Tag="3333"  ToolTip="井号,修改覆盖字段原名称作为导出列名" />
                                </DockPanel>                     
                            </Border>
                            <Border   Style="{StaticResource boder_order}" GotFocus="Border_GotFocus"  >
                                <DockPanel  >                                
                                    <TextBox  Text="样品编号"  Tag="12222" ToolTip="样品编号,修改覆盖字段原名称作为导出列名" />
                                </DockPanel>
                            </Border>-->
                          
                        </StackPanel>
                    </ScrollViewer>
                </Grid>
            </Grid>
        </Grid>
    </Grid>

</Window>

后台代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using WpfSnqkGasAnalysis.Model;

namespace WpfSnqkGasAnalysis
{
    /// <summary>
    /// WindowGasExportA2.xaml 的交互逻辑
    /// </summary>
    public partial class WindowGasExportA2 : Window
    {
        public WindowGasExportA2()
        {
            InitializeComponent();

            //左侧字段
            var leftButtons = leftFields.Children.Cast<Button>().ToList();
            leftButtons.ForEach(button =>
            {
                //左侧字段,点击触发
                button.Click += (sender, eventArgs) =>
                {
                    Button selectedButton = sender as Button;
                    selectedButton.Visibility = Visibility.Collapsed;

                    Border border = new Border();
                    border.Style = this.FindResource("boder_order") as Style;

                    //已经选好的字段,点击触发
                    border.GotFocus += Border_GotFocus;

                    TextBox textBox = new TextBox();
                    textBox.Text = selectedButton.Content.ToString();
                    textBox.ToolTip = textBox.Text + ",修改覆盖字段原名称作为导出列名";
                    textBox.Tag = new object[] { selectedButton.Tag, selectedButton };
                    border.Child = textBox;

                    selected_fields.Children.Add(border);
                };
            });

        }

        /// <summary>
        /// 最后一次点击的右侧字段
        /// </summary>
        Border lastClick;

        //选中的字段,设置命中效果;
        //创建时间:2023-8-9 16:22:34,作者:whl
        private void Border_GotFocus(object sender, RoutedEventArgs e)
        {
            if (lastClick != null)
            {
                lastClick.BorderBrush = Brushes.Gainsboro;
                lastClick.BorderThickness = new Thickness(1);
            }

            //命中样式
            Border border = sender as Border;
            border.BorderBrush = Brushes.Lime;
            //border.BorderThickness = new Thickness(3,8,3,8);
            border.BorderThickness = new Thickness(8);

            lastClick = border;

            //ShowAlertHelpter.ShowAlert("选中了");
        }

        //上移
        //创建时间:2023-8-9 16:54:01,作者:whl
        private void Up_click(object sender, RoutedEventArgs e)
        {
            //ShowAlertHelpter.ShowAlert("上移");            
            int index = selected_fields.Children.IndexOf(lastClick);

            //上一个元素
            int prevIndex = index - 1;
            if (prevIndex < 0)
            {
                prevIndex = 0;
            }
            //var prevUi = selected_fields.Children[prevIndex];
            selected_fields.Children.RemoveAt(index);
            selected_fields.Children.Insert(prevIndex, lastClick);
        }

        //下移
        //创建时间:2023-8-9 16:54:01,作者:whl
        private void Down_click(object sender, RoutedEventArgs e)
        {
            //ShowAlertHelpter.ShowAlert("下移");
            int index = selected_fields.Children.IndexOf(lastClick);

            //下一个元素
            int nextIndex = index +1;
            if (nextIndex== selected_fields.Children.Count) { nextIndex = selected_fields.Children.Count-1; }
          
            //var prevUi = selected_fields.Children[prevIndex];
            selected_fields.Children.RemoveAt(index);
            selected_fields.Children.Insert(nextIndex, lastClick);
        }

        //新增一列(空白列,没有数据)
        //创建时间:2023-8-9 16:54:01,作者:whl
        private void AddNewField_click(object sender, RoutedEventArgs e)
        {
            //ShowAlertHelpter.ShowAlert("新增一列");
            Border border = new Border();
            border.Style = this.FindResource("boder_order") as Style;

            //右侧的字段,点击触发
            border.GotFocus += Border_GotFocus;

            TextBox textBox = new TextBox();
            textBox.Text = "请输入列名";
            textBox.ToolTip = textBox.Text + ",此列是空白列,没有数据";
            textBox.Tag = new object[] { null, null };
            border.Child = textBox;

            selected_fields.Children.Add(border);
        }

        //移除一列
        //创建时间:2023-8-9 16:58:01,作者:whl
        private void RemoveField_click(object sender, RoutedEventArgs e)
        {
            //ShowAlertHelpter.ShowAlert("移除一列");
            //return;
            if (lastClick == null)
            {
                return;
            }

            //恢复展示左侧按钮字段;
            var currentInputBox = lastClick.Child as TextBox;
            var arr = currentInputBox.Tag as object[];

            //第二个,左侧的按钮
            bool right = arr.Length >= 2 && arr[1] is Button;
            if (right)
            {
                var leftButton = arr[1] as Button;
                leftButton.Visibility = Visibility.Visible;

                //移除命中的字段   
                selected_fields.Children.Remove(lastClick);
            }
            else if (arr[1] == null)
            {
                //移除命中的字段   
                selected_fields.Children.Remove(lastClick);
            }

        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/858402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【福建事业单位-资料分析】03 比重和平均数

【福建事业单位-资料分析】03 比重和平均数 一、比重&#xff08;现期比重&#xff0c;基期比重、两期比重&#xff09;1.1 现期比重增长贡献量&#xff0c;利润率 1.2基期比重&#xff08;用现期和增长率逆求&#xff09;1.3两期比重&#xff08;难点重点&#xff09;——比较…

工厂食堂就餐全攻略!还不赶紧来码住?

随着科技的不断进步&#xff0c;智能化系统在各个领域都呈现出令人瞩目的应用前景。在这个数字化时代&#xff0c;工厂食堂也逐渐走向智能化管理的道路。 智慧收银系统作为其中的一环&#xff0c;正为工厂食堂的效率提升、成本降低以及服务质量提升提供了全新的可能性。无需繁琐…

持有PMP证书,可申请CSPM证书!

一&#xff0c;CSPM介绍 CSPM的全称是&#xff1a;项目管理专业人员能力评价&#xff0c;是我们国内的“PMP”&#xff0c;是我们中国人自己的项目管理专业人士评价指南&#xff0c;符合中国国情且符合中国未来发展的项目管理专业人员能力评价标准。 2022年10月12日发布实施了…

计算机组成原理-笔记-第五章

目录 五、第五章——中央处理器 1、CPU的功能和基本结构 &#xff08;1&#xff09;运算器内部结构 &#xff08;2&#xff09;控制器的基本结构 &#xff08;3&#xff09;CPU的四大部分 2、指令执行过程&#xff08;数据流向 & 执行方案&#xff09; &#xff08;…

libheif —— 2、编写苹果、小米的.heic图片查看器

效果图 .heic简介 HEIC,是iOS 11更新后,iPhone 7及其后硬件,在拍摄照片时的默认图像存储格式。 HEIC是一种图像格式,上线时间还比较短,只有4年左右。自iOS 11和macOS High Sierra(10.13)内测开始,苹果将HEIC设置为图片存储的默认格式。与JPG相比,它占用的空间更小,画…

【ADS】在同一个symbol层次化实现理想器件和EM仿真的切换

ADS层次化切换理想器件和电磁仿真 1.需求描述2.实现步骤2.1 层次结构2.2 新建schematic2.3 新建symbol2.4 使用演示 3.后言 1.需求描述 在使用ADS做电磁仿真时&#xff0c;得到的结果需要多次迭代去接近原理图&#xff0c;那么就需要反复与原理图切换进行对比。 比较直接的方法…

Spring Initailizr--快速入门--SpringBoot的选择

&#x1f600;前言 本篇博文是关于IDEA使用Spring Initializer快速创建Spring Boot项目的说明&#xff0c;希望能够帮助到您&#x1f60a; &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可…

tsmc12 via0_grid

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?拾陆楼知识星球入口 PG VIA0连接ME1和ME0,存在cell中奇数site中,如下图,所以两个cell在竖直方向邻接时要对其有via0的site,为了方便place与检查需要place前定义via0_grid,辅助奇数cell site落在grid上 自定义的via0_…

AcWing算法提高课-1.3.18能量石

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 本题链接&#xff08;AcWing&#xff09; 点这里 题目描述 岩石怪物杜达生活在魔法森林中&#xff0c;他在午餐时收集了 N N N 块能量石准备开吃。 由于他的嘴很小&#xff0c;所以一次只能…

Elasticsearch 与 OpenSearch:揭开性能差距

作者&#xff1a;George Kobar, Ugo Sangiorgi 对于任何依赖快速、准确搜索数据的组织来说&#xff0c;强大、快速且高效的搜索引擎是至关重要的元素。 对于开发人员和架构师来说&#xff0c;选择正确的搜索平台可以极大地影响你的组织提供快速且相关结果的能力。 在我们全面的…

突破笔试:力扣计算布尔二叉树的值(medium)

1.题目链接&#xff1a;2331. 计算布尔二叉树的值 2. 题目描述&#xff1a; 给你一棵 完整二叉树 的根&#xff0c;这棵树有以下特征&#xff1a;叶子节点 要么值为 0 要么值为 1 &#xff0c;其中 0 表示 False &#xff0c;1 表示 True 。 非叶子节点 要么值为 2 要么值为 …

通过Easy Excel导入数据

目录 &#x1f351;一、背景&#x1f351;二、开发验证&#x1f34a;2.1、引入easyexcel依赖&#x1f34a;2.2、创建表及基础代码&#x1f34a;2.3、处理类及接口&#x1f353;2.3.1、EasyExcel监听处理器&#x1f353;2.3.2、Controller接口&#x1f353;2.3.3、service调用监…

Vue3使用wangEditor

那么这一节我们在编辑公司信息的弹窗中使用富文本插件wangEditor官网 Vue3使用wangEditor 安装wangEditor在弹窗中引入wangEditor结构api接口部分editor组件script部分怎么去修改富文本的编辑器&#xff1f; 案例内效果&#xff1a; 安装wangEditor npm install wangeditor/…

bash: make: command not found

make之后报错信息如下&#xff1a;cd 对应的文件路径后 make 发现报错&#xff1a;bash: make: command not found 这个原因可能是没有安装make工具,也可能是安装了make之后,没有将make的文件路径添加到系统环境变量中 有没有安装make,可以使用Search Everything搜索是否有make…

24聊城大学823软件工程考研

1.软件发展有几个阶段&#xff1f;各有何特征&#xff1f; ①程序设计阶段 硬件特征&#xff1a;价格贵、存储容量小、运行可靠性差。 软件特征&#xff1a;只有程序、程序设计概念&#xff0c;不重视程序设计方法。 ②程序系统阶段。 硬件特征&#xff1a;速度、容量及工作可…

JS逆向系列之猿人学爬虫第11题 - app抓取 - so文件协议破解

题目地址 http://match.yuanrenxue.com/match/11这是个app题目,先下载下来安装到测试手机上 安装完成后的app界面长这样 打开之后是这样的: 要求已经简单明了了。 二话不说先反编译app 不出意外的是没出意外,源代码里面没啥混淆,所有东西都展示的明明白白的。 "…

Java转换流

文章目录 转换流的理解**InputStreamReader****OutputStreamWriter**练习 引入情况1&#xff1a; 使用FileReader 读取项目中的文本文件。由于IDEA设置中针对项目设置了UTF-8编码&#xff0c;当读取Windows系统中创建的文本文件时&#xff0c;如果Windows系统默认的是GBK编码&a…

每天一个知识点——Normalization

这里结合大模型的学习&#xff0c;主要分析Layer Norm、RMS Norm和Deep Norm的异同&#xff0c;与此同时&#xff0c;究竟是在之前执行Normalization&#xff08;Pre-Norm&#xff09;还是之后执行&#xff08;Post-Norm&#xff09;&#xff0c;也是一个比较喜欢拿来讨论的知识…

LoRaWAN网关与网络服务器(NS)的通信CUPS 协议介绍

LoRa Basics™ Station 定期查询 CUPS 服务器以获取更新。该协议是 HTTP/REST,使用Credentials中描述的客户端/服务器身份验证方法。对于每个查询,工作站都会提供有关其当前状态的信息,并接收包含其 LNS 和 CUPS 凭证更新的二进制 blob,以及具有任意更新的通用数据段。 通…

AIRIOT搭建低成本、更聪明的智能环卫系统,让管理更加高效智能

环卫工程作为城市基础设施保障&#xff0c;是城市建设管理中不可或缺的重要组成部分。随着城市进程的加快及技术的进步&#xff0c;环卫工程管理也在逐渐向精细化、智能化、绿色化等趋势发展。 智能环卫依托物联网、AI、大数据等技术&#xff0c;对环卫管理所涉及到的人、车、物…