一直对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="" Width="" Background="LightBlue">
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Width" Value=""/>
<Setter Property="Height" Value=""/>
<Setter Property="Margin" Value=""/>
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="40*"/>
<RowDefinition Height="221*"/>
</Grid.RowDefinitions>
<WrapPanel Grid.Row="" Grid.Column="">
<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="" Grid.Column="" 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 = ; i < ; 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=""+i.ToString()
};
Windows.Add(c);
}
if (this.Windows.Count > )
{
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 = -;
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="" Width="" 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=""></Setter>
<Setter Property="Height" Value="" ></Setter>
<Setter Property="HorizontalAlignment" Value="Left"></Setter>
</Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Width" Value=""></Setter>
<Setter Property="Height" Value="" ></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="" Grid.Column=""></Label>
<Label Content="评价器地址:" Grid.Row="" Grid.Column=""></Label>
<Label Content="条屏地址:" Grid.Row="" Grid.Column=""></Label>
<Label Content="IP:" Grid.Row="" Grid.Column=""></Label>
<Label Content="设备注册号:" Grid.Row="" Grid.Column=""></Label>
<Label Content="描述:" Grid.Row="" Grid.Column=""></Label>
<TextBox x:Name="textboxWin" Grid.Row="" Grid.Column=""></TextBox>
<TextBox x:Name="textboxEvalutor" Grid.Row="" Grid.Column=""></TextBox>
<TextBox x:Name="textboxStripeScreen" Grid.Row="" Grid.Column=""></TextBox>
<TextBox x:Name="textboxIP" Grid.Row="" Grid.Column=""></TextBox>
<TextBox x:Name="textboxRegNum" Grid.Row="" Grid.Column=""></TextBox>
<TextBox x:Name="textboxDec" Grid.Row="" Grid.Column=""></TextBox>
<Button Content="确定" x:Name="btnConfirm" Grid.Row="" Grid.Column="" 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)?:Convert.ToInt32(this.textboxEvalutor.Text.Trim()); }
set{this.textboxEvalutor.Text=value.ToString();}
}
//获取或设置条屏地址
public int StripeScreen
{
get { return string.IsNullOrWhiteSpace(this.textboxStripeScreen.Text) ? : 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; } }
}
}

随机推荐

  1. 没有Path的Binding

    当Binding源本身就是数据且不需要Path来指明时,可以设置Path的值为".",或直接省略Path.XAML中这个"."可以省略不写,但在C#代码中是不能 ...

  2. git学习笔记01-git最基本的工作原理分布式

    git学习的网站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000  --廖雪峰老师 ...

  3. SVN 的使用

    文件夹上的符号有什么意义?? 黄色感叹号(有冲突):--这是有冲突了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不允许 ...

  4. LTE Module User Documentation(翻译5)——Mobility Model with Buildings

    LTE用户文档 (如有不当的地方,欢迎指正!) 8 Mobility Model with Buildings   我们现在通过例子解释如何在 ns-3 仿真程序中使用 buildings 模型(特别 ...

  5. Java Abstract class and Interface

    Abstract Class 在定义class的时候必须有abstract 关键字 抽象方法必须有abstract关键字. 可以有已经实现的方法. 可以定义static final 的常量. 可以实现 ...

  6. iOS - AVPlayer 音视频播放

    前言 NS_CLASS_AVAILABLE(10_7, 4_0) @interface AVPlayer : NSObject @available(iOS 4.0, *) public class ...

  7. php提示:Call to undefined function curl_init

    我要利用curl函数进行数据采集时发现提示Call to undefined function curl_init错误了,后来从官网了解到因为curl默认不是php开启的函数,我们需要手工打开哦,下面 ...

  8. 如何查看与刷新DNS本地缓存

    如何查看与刷新DNS本地缓存 一.查看DNS本地缓存 在cmd窗口输入:ipconfig/displaydns 二.刷新DNS本地缓存 在cmd窗口输入:ipconfig/flushdns 之后输入: ...

  9. POJ 3468 线段树裸题

    这些天一直在看线段树,因为临近期末,所以看得断断续续,弄得有些知识点没能理解得很透切,但我也知道不能钻牛角尖,所以配合着刷题来加深理解. 然后,这是线段树裸题,而且是最简单的区间增加与查询,我参考了A ...

  10. 网络性能测试工具iperf详细使用图文教程【转载】

    原文:http://blog.163.com/hlz_2599/blog/static/142378474201341341339314/ 参考:http://man.linuxde.net/iper ...