一直对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. Xstream 学习地址

    http://forestqqqq.iteye.com/category/301129

  2. mysql 循环控制

    1.使用whileDROP PROCEDURE IF EXISTS `addstudent`;DELIMITER ;;CREATE PROCEDURE `addstudent`(iNum int)BE ...

  3. thinkphp模板调用函数用法

    注意:自定义函数要放在项目应用目录/common/common.php中. 这里是关键. 模板变量的函数调用格式为: {$varname|function1|function2=arg1,arg2,# ...

  4. Oracle存储过程中异步调用的实际操作步骤

    本文标签:Oracle存储过程 我们都知道在Oracle数据库的实际应用的过程中,我们经常把相关的业务处理逻辑,放在Oracle存储过程中,客户端以通过ADO来进行相关的调用  .而有些相关的业务逻辑 ...

  5. Android 四种简单的动画(淡入淡出、旋转、移动、缩放效果)

    最近在Android开发当中,用到的动画效果. public void onClick(View arg0) { // TODO 自动生成的方法存根 switch (arg0.getId()) { c ...

  6. html5 和css3的小知识!

    阿里web字体的使用 (1)进入官网  点击webfont (2)输入对应的文字 然后选择添加字体 (3)可以直接引用线上地址或者本地下载,引用线上地址需要添加http,(在服务器环境下可以不用),如 ...

  7. spring中的Log4jConfigListener作用和webapp.root的设置

    转:http://blog.sina.com.cn/s/blog_7bbf356c01016wld.html 使用spring中的Log4jConfigListener有如如下好处:     1. 动 ...

  8. 转!大端模式&小端模式

    大端模式&小端模式   在C语言中除了8位的char型之外,还有16位的short型,32位的long型(要看具体的编译器),对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器 ...

  9. gcj_2016_Round1_B

    题目 一个NxN的矩阵,矩阵中每个方格中都有一个数值,且每一行的数值严格单调递增,每一列的数值严格单调递增.分别取出N行和N列,形成2N个长度为N的数组,现在有一个数组丢失,已知剩下的2N-1个长度为 ...

  10. iOS开发 字符串添加行间距

    + (CGFloat)achiveWidthAttrString:(NSAttributedString *)attrString withHeight:(CGFloat)height { CGRec ...