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="" 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; } }
}
}
随机推荐
- CSS笔记(九)轮廓
参考:http://www.w3school.com.cn/css/css_outline.asp CSS 边框属性 "CSS" 列中的数字指示哪个 CSS 版本定义了该属性. 属 ...
- kakfa源代码开发环境搭建过程中的错误处理
在window上搭建kafka的源代码开发环境,主要参考如下的blog: http://www.bubuko.com/infodetail-695974.html << Window ...
- Websocket————错误总结
websocket 一.需要注意的是,js建立连接处完整的js代码要执行完成退出后才会真正发起建立连接请求,如果在此之前发送消息则会报错如下: InvalidStateError: An attemp ...
- OCR识别-python版(一)
需求:识别图片中的文字信息环境:windows系统 开发语言:python 使用工具类:1.pyocr 2.PIL 3.tesseract-ocr 步骤: 1.pyocr 网络通直接使用命令:pip ...
- apiCloud授权绑定第三方账号,微信、QQ、微博。
1.检测软件是否安装 2.授权获取code 3.获取token,openid等 4.获取头像昵称 var wx,qq,weibo; var loginParam={}; apiready = func ...
- (五)stm32工程代码HardFault异常查错调试方法
一.导致异常的原因很多,例如:直接使用未分配空间的指针.栈溢出等一场非法操作便会使程序进入HardFault异常状态.下面介绍怎么找出程序中的异常. 接下来在keil_MDK工程中,编译代码,并deb ...
- ajax小技巧,防止多次点击发送多个请求
var isAjax=false;$("btn").click(function(){ if(isAjax) return; isAjax=true; setTimeout(fun ...
- goLang文件遍历
package main import ( "fmt" "io/ioutil" "os" "path/filepath&q ...
- hadoop 入门实例【转】
原文链接:http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.html 1.数据去重 "数据去重"主要是为了掌握 ...
- TP学习笔记
ThinkPHP采用单一入口模式访问应用,对应用的所有请求都定向到应用的入口文件,系统会从URL参数中解析当前请求的模块.控制器和操作,下面是一个标准的URL访问格式: http://serverNa ...