首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

Silverlight中设计焦点和文本框回车到上一个控件

2012-11-07 
Silverlight中设计焦点和文本框回车到下一个控件1.想在Silverlight首次启动让某个文本框获取焦点,使用Load

Silverlight中设计焦点和文本框回车到下一个控件

1.想在Silverlight首次启动让某个文本框获取焦点,使用Loaded事件中txt.Focus()是不起做用的,要完成这功能只要添加一句代码即可: 

        private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)        {            HtmlPage.Plugin.Invoke("focus");            txtName.Focus();        }

2.在程序中为了方便用户,在一个文本框中按回车后跳到别一个文本框或其它控件,我们可以对原有的TextBox进行扩充,添加一个NextControl的属性用于保存下一个控件的名字,

另外为了方便我加了一个ToNextControl的事件,这样用起来更加方便,代码如下:

namespace HahaMan.SLTools.Controls{    public class MyTextBox:TextBox    {        //事件        public event EventHandler ToNextControl;        private string nextControl="";        //用于保存下一个控件的名字        public string NextControl        {            get { return nextControl; }            set { nextControl = value; }        }        protected override void OnKeyDown(KeyEventArgs e)        {            base.OnKeyDown(e);            if (e.Key == Key.Enter)//如果是回车            {                if (ToNextControl != null)//如果自己写了事件处理程序                {                    ToNextControl(this, e);//调用事件                }                else                {                    //如果没有指定事件                    if (nextControl != null && nextControl.Length > 0)                    {                         //查找下一个控件                        Control c = (this.Parent as Panel).FindName(nextControl) as Control;                        if (c != null)                        {                            c.Focus();                        }                    }                }            }        }    }}


使用方法一:

<my:MyTextBox Height="23" HorizontalAlignment="Left" Margin="786,152,0,0" Name="txtName" NextControl="txtPwd" VerticalAlignment="Top" Width="120" />            <my:MyTextBox Height="23" HorizontalAlignment="Left" Margin="786,205,0,0" Name="txtPwd"  NextControl="btnLogin" VerticalAlignment="Top" Width="120" />            <Button Content="登录" Height="23" Margin="763,259,0,0" Name="btnLogin" VerticalAlignment="Top" HorizontalAlignment="Left" Width="56" Click="btnLogin_Click" />

使用方法二:
xaml代码:

<my:MyTextBox Height="23" HorizontalAlignment="Left" Margin="786,152,0,0" Name="txtName"  VerticalAlignment="Top" Width="120" ToNextControl="toNextControl" />            <my:MyTextBox Height="23" HorizontalAlignment="Left" Margin="786,205,0,0" Name="txtPwd"   VerticalAlignment="Top" Width="120" ToNextControl="toNextControl" />            <Button Content="登录" Height="23" Margin="763,259,0,0" Name="btnLogin" VerticalAlignment="Top" HorizontalAlignment="Left" Width="56" Click="btnLogin_Click" />

cs代码:

        private void toNextControl(object sender, EventArgs e)        {            if (sender == txtName) txtPwd.Focus();            if (sender == txtPwd) btnLogin.Focus();        }
2楼lonelyxmas前天 19:30
很喜欢博主的文章,刚刚用豆约翰博客备份专家备份了您的全部博文。
1楼caishaosongjava前天 17:56
今年又教.NET 去了?

热点排行