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; }}} }?
轉載于:https://www.cnblogs.com/come-on-come-on/p/4592144.html
總結
- 上一篇: 傻瓜突破linux--rootpassw
- 下一篇: 去除img之间的空白