zoukankan      html  css  js  c++  java
  • C#get,set

    一直对get,set的理解只在文字上:get 属性访问器用于返回属性值,而 set 访问器用于分配新值.其实这样理解是有点狭隘的,尤其是对set。set应该可以理解为为成员分配新值时的处理,比如一个类成员Name,对Name赋值时可以同时处理与Name业务上有关的操作。下面一个工作用到的例子(wpf程序):选中一条记录,点击"修改"打开对应页面,代码界面如下:

    先上界面图:第一个界面显示详细,第二个界面是点击增加按钮或选中一条数据点击修改按钮时弹出界面

    第二个界面(弹出界面)

    具体代码实现如下:

    //第一个界面xaml页面:
    <Window x:Class="WPF_Study.WindowSet"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="WindowSet" Height="300" Width="540" Background="LightBlue">
        <Grid>
            <Grid.Resources>
                <Style TargetType="{x:Type Button}">
                    <Setter Property="Width" Value="60"/>
                    <Setter Property="Height" Value="30"/>
                    <Setter Property="Margin" Value="5"/>
                </Style>
            </Grid.Resources>
            <Grid.RowDefinitions>
                <RowDefinition Height="40*"/>
                <RowDefinition Height="221*"/>
            </Grid.RowDefinitions>
            <WrapPanel Grid.Row="0" Grid.Column="0">
                <Button Content="查询" x:Name="btnSearch"></Button>
                <Button Content="新增" x:Name="btnAdd"></Button>
                <Button Content="修改" x:Name="btnAmend"></Button>
                <Button Content="删除" x:Name="btnDelete"></Button>
            </WrapPanel>
            <DataGrid x:Name="dataGrid" AutoGenerateColumns="False" Grid.Row="2" Grid.Column="0" CanUserAddRows="False">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="窗口编号" Binding="{Binding Win}"/>
                    <DataGridTextColumn Header="评价器地址" Binding="{Binding Evalutor}"/>
                    <DataGridTextColumn Header="条屏地址" Binding="{Binding StripeScreen}"/>
                    <DataGridTextColumn Header="IP" Binding="{Binding IP}"/>
                    <DataGridTextColumn Header="注册设备号" Binding="{Binding RegNum}"/>
                    <DataGridTextColumn Header="描述" Binding="{Binding Description}"  Width="*"/>
                </DataGrid.Columns>
            </DataGrid>
        </Grid>
    </Window>
    //对应的后台代码:
    using System;
    using System.Windows;
    using System.Windows.Controls;
    using System.Collections.ObjectModel;
    using WPF_Study.Entity;
    
    namespace WPF_Study
    {
        /// <summary>
        /// Interaction logic for WindowSet.xaml
        /// </summary>
        public partial class WindowSet : Window
        {
            internal ObservableCollection<QueueClient.Counter> Windows { get; set; }
            //修改的行号标识
            private int flag;
    
            public WindowSet()
            {
                InitializeComponent();
                Windows = new ObservableCollection<QueueClient.Counter>();
                this.btnAdd.Click += Button_Click;
                this.btnAmend.Click += Button_Click;
                this.btnDelete.Click += Button_Click;
                this.btnSearch.Click += Button_Click;
                //测试手动造数据
                for (int i = 0; i < 5; i++)
                {
                    QueueClient.Counter c = new QueueClient.Counter()
                    {
                        Win=i.ToString(),
                        Description = "Description"+i.ToString(),
                        Evalutor=i,
                        StripeScreen=i,
                        IP="172.100.12.0"+i.ToString(),
                        RegNum="1725"+i.ToString()
                    };
                    Windows.Add(c);
                }
                if (this.Windows.Count > 0)
                {
                    this.dataGrid.ItemsSource = Windows;
                }
    
            }
    
            void Button_Click(object sender, RoutedEventArgs e)
            {
                Button button = e.OriginalSource as Button;
                if(button.Equals(this.btnAdd))
                {
                    WindowUpdate win = new WindowUpdate();
                    flag = -1;
                    win.Closed += win_Closed;
                    win.ShowDialog();
                }
                if(button.Equals(this.btnDelete))
                {
                    QueueClient.Counter c=this.dataGrid.SelectedItem as QueueClient.Counter;
                    this.Windows.Remove(c);
                }
                if(button.Equals(this.btnAmend))
                {
                    QueueClient.Counter c = this.dataGrid.SelectedItem as QueueClient.Counter;
                    flag = Windows.IndexOf(c);
                    WindowUpdate win = new WindowUpdate(c.Win);
                    win.Evaluator = c.Evalutor;
                    win.StripeScreen = c.StripeScreen;
                    win.IP = c.IP;
                    win.RegNum = c.RegNum;
                    win.Description = c.Description;
                    win.Closed += win_Closed;
                    win.ShowDialog();
                }
            }
    
            private void win_Closed(object sender, EventArgs e)
            {
               
            }
    
        }
    }
    //增加修改界面(共用同一个界面程序)
    xaml界面代码:
    <Window x:Class="WPF_Study.WindowUpdate"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="WindowUpdate" Height="300" Width="540" Background="LightBlue">
        <Grid>
            <Grid.Resources>
                <Style TargetType="{x:Type Label}">
                    <Setter Property="HorizontalAlignment" Value="Right"></Setter>
                </Style>
                <Style TargetType="{x:Type TextBox}">
                    <Setter Property="Width" Value="160"></Setter>
                    <Setter Property="Height" Value="25" ></Setter>
                    <Setter Property="HorizontalAlignment" Value="Left"></Setter>
                </Style>
                <Style TargetType="{x:Type Button}">
                    <Setter Property="Width" Value="60"></Setter>
                    <Setter Property="Height" Value="25" ></Setter>
                    <Setter Property="HorizontalAlignment" Value="Left"></Setter>
                </Style>
            </Grid.Resources>
            <Grid.RowDefinitions>
                <RowDefinition Height="10*"/>
                <RowDefinition Height="35*"/>
                <RowDefinition Height="10*"/>
                <RowDefinition Height="35*"/>
                <RowDefinition Height="10*"/>
                <RowDefinition Height="35*"/>
                <RowDefinition Height="10*"/>
                <RowDefinition Height="35*"/>
                <RowDefinition Height="10*"/>
                <RowDefinition Height="35*"/>
                <RowDefinition Height="10*"/>
                <RowDefinition Height="35*"/>
                <RowDefinition Height="10*"/>
                <RowDefinition Height="35*"/>
                <RowDefinition Height="10*"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="100*" />
                <ColumnDefinition Width="105*" />
                <ColumnDefinition Width="246*" />
                <ColumnDefinition Width="100*" />
            </Grid.ColumnDefinitions>
            <Label Content="窗体编号:" Grid.Row="1" Grid.Column="1"></Label>
            <Label Content="评价器地址:" Grid.Row="3" Grid.Column="1"></Label>
            <Label Content="条屏地址:" Grid.Row="5" Grid.Column="1"></Label>
            <Label Content="IP:" Grid.Row="7" Grid.Column="1"></Label>
            <Label Content="设备注册号:" Grid.Row="9" Grid.Column="1"></Label>
            <Label Content="描述:" Grid.Row="11" Grid.Column="1"></Label>
            <TextBox x:Name="textboxWin" Grid.Row="1" Grid.Column="2"></TextBox>
            <TextBox x:Name="textboxEvalutor" Grid.Row="3" Grid.Column="2"></TextBox>
            <TextBox x:Name="textboxStripeScreen" Grid.Row="5" Grid.Column="2"></TextBox>
            <TextBox x:Name="textboxIP" Grid.Row="7" Grid.Column="2"></TextBox>
            <TextBox x:Name="textboxRegNum" Grid.Row="9" Grid.Column="2"></TextBox>
            <TextBox x:Name="textboxDec" Grid.Row="11" Grid.Column="2"></TextBox>
            <Button Content="确定" x:Name="btnConfirm" Grid.Row="13" Grid.Column="2" Click="btnConfirm_Click"></Button>
        </Grid>
    </Window>
    //后台代码(此界面成员的get,set用法)
    using System;
    using System.Windows;
    using System.Windows.Controls;
    namespace WPF_Study
    {
        /// <summary>
        /// Interaction logic for WindowUpdate.xaml
        /// </summary>
        public partial class WindowUpdate : Window
        {
            //获取窗口编号
            public string Win
            {
                get { return this.textboxWin.Text; }
                private set { this.textboxWin.Text = value; }
            }
            //获取或设置评价器地址
            public int  Evaluator
            {
                get { return string.IsNullOrWhiteSpace(this.textboxEvalutor.Text)?0:Convert.ToInt32(this.textboxEvalutor.Text.Trim()); } 
                set{this.textboxEvalutor.Text=value.ToString();}
            }
            //获取或设置条屏地址
            public int StripeScreen
            {
                get { return string.IsNullOrWhiteSpace(this.textboxStripeScreen.Text) ? 0 : Convert.ToInt32(this.textboxStripeScreen.Text.Trim()); }
                set { this.textboxStripeScreen.Text = value.ToString(); }
            }
            //获取或设置IP地址
            public string IP
            {
                get { return this.textboxIP.Text; }
                set { this.textboxIP.Text = value; }
            }
            //获取或设置注册设备号
            public string RegNum
            {
                get { return this.textboxRegNum.Text; }
                set { this.textboxRegNum.Text = value; }
            }
            //获取或设置注册设备号
            public string Description
            {
                get { return this.textboxDec.Text; }
                set { this.textboxDec.Text = value; }
            }
            //新增窗口构造函数
            public WindowUpdate()
            {
                InitializeComponent();
            }
    
            //修改窗口构造函数
            public WindowUpdate(string strWin):this()
            {
                this.Win = strWin;
            }
    
            private void btnConfirm_Click(object sender, RoutedEventArgs e)
            {
                this.DialogResult = true;
                this.Close();
            }
        }
    }
    //实体
    using System;
    using System.Xml;
    using System.Xml.Serialization;
    
    namespace WPF_Study.Entity
    {
       internal class QueueClient
        {
    
           public class Counter
           {
               [XmlAttribute("Window")]
               public string Win { get; set; }
               public string  Description { get; set; }
               [XmlIgnore]
               public int Evalutor { get; set; }
               [XmlIgnore]
               public int StripeScreen { get; set; }
               [XmlIgnore]
               public string IP { get; set; }
               [XmlIgnore]
               public string RegNum { get; set; }
    
           }
        }
    }
  • 相关阅读:
    dwz tabs table实现翻页及各tabs查询
    DruidDataSource配置
    利用blob对象实现大文件分片上传
    HTML5 File API 全介绍
    JS获取当前网页内容,创建文件并下载,URL.createObjectURL和URL.revokeObjectURL
    使用 CSS 接收用户的点击事情并对相关节点进行操作
    Flex布局
    background: inherit制作倒影、单行居中两行居左超过两行省略
    层叠顺序与堆栈上下文、font-family字体定义顺序的
    简单使用GA监控网站浏览行为
  • 原文地址:https://www.cnblogs.com/come-on-come-on/p/4592144.html
Copyright © 2011-2022 走看看