SilverLight学习笔记--实际应用(一)(3):手把手建立一个Silverlight应用程序之删除记录...

接上一篇,本节我们演示如何删除DataGrid中的记录.
功能描述:我们提供一个删除按钮,点击它可以删除当前选中的数据记录行,当然,我们也可以用Delete键盘键删除选中的记录。
一、界面修改
如同添加新记录一样,首先修改用户界面.Page.xaml代码如下:
< UserControl xmlns:data = " clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data "   x:Class = " SLApplicationExample.Page "
    xmlns
= " http://schemas.microsoft.com/winfx/2006/xaml/presentation "  
    xmlns:x
= " http://schemas.microsoft.com/winfx/2006/xaml "  
    Width
= " 400 "  Height = " 300 " >
    
< Grid x:Name = " LayoutRoot "  Background = " White "  Margin = " 5 " >
        
< Grid.RowDefinitions >
            
< RowDefinition Height = " Auto " />
            
< RowDefinition Height = " * " />
        
</ Grid.RowDefinitions >
        
< StackPanel Orientation = " Horizontal " >
            
< Button x:Name = " addButton "  Content = " Add "  Margin = " 10 " />
            
< Button x:Name = " deleteButton "  Content = " Delete "  Margin = " 10 " />

        
</ StackPanel >
        
< data:DataGrid x:Name = " dgPeople "  Grid.Row = " 1 "   />
    
</ Grid >

</ UserControl >
新用户界面如下图:                       

                        
二、删除按钮点击事件和键盘Delete键事件

事先要绑定事件到DataGrid控件上
             this .deleteButton.Click  +=   new  RoutedEventHandler(deleteButton_Click);
            
this .dgPeople.KeyDown  +=   new  KeyEventHandler(peopleDataGrid_KeyDown);
1、删除按钮点击事件
   #region  通过按钮删除记录
        
void  deleteButton_Click( object  sender, RoutedEventArgs e)
        {
            DeletePerson();
        }
        
#endregion
2、Delete键事件
ContractedBlock.gif ExpandedBlockStart.gif     处理键盘响应事件 #region 处理键盘响应事件
        
void peopleDataGrid_KeyDown(object sender, KeyEventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
ContractedSubBlock.gifExpandedSubBlockStart.gif            
如果是Insert键,则做插入新行操作#region 如果是Insert键,则做插入新行操作
            
if (Key.Insert == e.Key)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                mypeople.Add(
new Person());
            }

            
#endregion


ContractedSubBlock.gifExpandedSubBlockStart.gif            
如果是Delete键,则做删除操作#region 如果是Delete键,则做删除操作
            
if (Key.Delete == e.Key)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                DeletePerson();
            }

            
#endregion

        }

        
#endregion

3、建立DeletePerson()代码
   #region  删除记录子程序
        
private   void  DeletePerson()
        {
            
if  ( null   ==   this .dgPeople.SelectedItem)
            {
                
return ;
            }
            Person person 
=   this .dgPeople.SelectedItem  as  Person;
            
if  ( null   ==  person)
            {
                
return ;
            }
            mypeople.Remove(person);
        }
        
#endregion
 Page.xaml.cs全部代码如下:
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Net;
using  System.Windows;
using  System.Windows.Controls;
using  System.Windows.Documents;
using  System.Windows.Input;
using  System.Windows.Media;
using  System.Windows.Media.Animation;
using  System.Windows.Shapes;

namespace  SLApplicationExample
ExpandedBlockStart.gifContractedBlock.gif
{
    
public partial class Page : UserControl
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        People mypeople;

        
public Page()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            InitializeComponent();

            
this.addButton.Click += new RoutedEventHandler(addButton_Click);
            
this.deleteButton.Click += new RoutedEventHandler(deleteButton_Click);
            
this.dgPeople.KeyDown += new KeyEventHandler(peopleDataGrid_KeyDown);

            Loaded 
+=new RoutedEventHandler(Page_Loaded);


        }


        
private void Page_Loaded(object sender, RoutedEventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
ContractedSubBlock.gifExpandedSubBlockStart.gif            
取得数据源数据并绑定到DataGrid控件上#region 取得数据源数据并绑定到DataGrid控件上
            mypeople 
= People.GetTestData();
            
this.dgPeople.ItemsSource = mypeople;
            
#endregion


        }



ContractedSubBlock.gifExpandedSubBlockStart.gif        
通过按钮添加新记录行#region 通过按钮添加新记录行
        
void addButton_Click(object sender, RoutedEventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            mypeople.Add(
new Person());
        }

        
#endregion




ContractedSubBlock.gifExpandedSubBlockStart.gif        
通过按钮删除记录#region 通过按钮删除记录
        
void deleteButton_Click(object sender, RoutedEventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            DeletePerson();
        }

        
#endregion




ContractedSubBlock.gifExpandedSubBlockStart.gif        
删除记录子程序#region 删除记录子程序
        
private void DeletePerson()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
if (null == this.dgPeople.SelectedItem)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
return;
            }

            Person person 
= this.dgPeople.SelectedItem as Person;
            
if (null == person)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
return;
            }

            mypeople.Remove(person);
        }

        
#endregion



ContractedSubBlock.gifExpandedSubBlockStart.gif        
处理键盘响应事件#region 处理键盘响应事件
        
void peopleDataGrid_KeyDown(object sender, KeyEventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
ContractedSubBlock.gifExpandedSubBlockStart.gif            
如果是Insert键,则做插入新行操作#region 如果是Insert键,则做插入新行操作
            
if (Key.Insert == e.Key)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                mypeople.Add(
new Person());
            }

            
#endregion


ContractedSubBlock.gifExpandedSubBlockStart.gif            
如果是Delete键,则做删除操作#region 如果是Delete键,则做删除操作
            
if (Key.Delete == e.Key)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                DeletePerson();
            }

            
#endregion

        }

        
#endregion


    }

}

按F5运行测试即可看到效果
                        

转载于:https://www.cnblogs.com/wsdj-ITtech/archive/2009/09/11/1564469.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值