Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在SilverLight或Windows Phone中为布局(某些元素除外)创建事件_C#_Wpf_Silverlight_Windows Phone 7_Silverlight 4.0 - Fatal编程技术网

C# 如何在SilverLight或Windows Phone中为布局(某些元素除外)创建事件

C# 如何在SilverLight或Windows Phone中为布局(某些元素除外)创建事件,c#,wpf,silverlight,windows-phone-7,silverlight-4.0,C#,Wpf,Silverlight,Windows Phone 7,Silverlight 4.0,我有一个带有两个文本框的表单,当我单击布局时,我可以使用什么事件以及如何获取操作,除了这个文本框?因此,当我点击文本框时,这个事件不应该起作用。当我点击布局的其他部分时,它应该可以工作,除了我在表单上的文本框我做了类似的事情。在后面的代码中,我使用了以下内容: layoutRoot.AddHandler(MouseLeftButtonDownEvent, new MouseButtonEventHandler((s, e) => {

我有一个带有两个文本框的表单,当我单击布局时,我可以使用什么事件以及如何获取操作,除了这个文本框?因此,当我点击文本框时,这个事件不应该起作用。当我点击布局的其他部分时,它应该可以工作,除了我在表单上的文本框

我做了类似的事情。在后面的代码中,我使用了以下内容:

layoutRoot.AddHandler(MouseLeftButtonDownEvent, new MouseButtonEventHandler((s, e) =>
                {
                    //In this case, don't focus.
                    if (RecieveFocus != null && 
                        e.OriginalSource is Textbox &&
                        ((e.OriginalSource as Textbox).Tag == "DONT FOCUS")
                    {
                        //do nothing, or whatever you want
                    }
                    else if(RecieveFocus != null)
                        RecieveFocus(this, new EventArgs());                            
                }), true);
您可以检查您的原始来源是否是文本框,如果是,请不要执行您希望执行的其他操作。添加处理程序的最后一个布尔值true表示要处理标记为已处理的事件


我制作了一个名为ReceiveFocus的事件,我处理并引发了这个事件,即使在我的布局根目录上单击了任何东西,除了(在本例中)带有标记“DONT FOCUS”的文本框,我也做了类似的事情。在后面的代码中,我使用了以下内容:

layoutRoot.AddHandler(MouseLeftButtonDownEvent, new MouseButtonEventHandler((s, e) =>
                {
                    //In this case, don't focus.
                    if (RecieveFocus != null && 
                        e.OriginalSource is Textbox &&
                        ((e.OriginalSource as Textbox).Tag == "DONT FOCUS")
                    {
                        //do nothing, or whatever you want
                    }
                    else if(RecieveFocus != null)
                        RecieveFocus(this, new EventArgs());                            
                }), true);
您可以检查您的原始来源是否是文本框,如果是,请不要执行您希望执行的其他操作。添加处理程序的最后一个布尔值true表示要处理标记为已处理的事件


我创建了一个名为ReceiveFocus的事件,我处理并引发该事件,即使在我的布局根目录上单击了任何内容,但(在本例中)带有标记“DONT FOCUS”的文本框除外。您可以在页面的主网格上设置MouseLeftButtonUp事件。大概是这样的:

<Grid x:Name="LayoutRoot" Background="Transparent" MouseLeftButtonUp="LayoutRoot_MouseLeftButtonUp">
private void LayoutRoot_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    //Do something
}

我在一个有两个文本框和一个复选框的页面上测试了这一点,这很有效。除了文本框和引发事件的复选框之外,我单击的所有地方。希望这有帮助

您可以在页面的主网格上设置MouseLeftButtonUp事件。大概是这样的:

<Grid x:Name="LayoutRoot" Background="Transparent" MouseLeftButtonUp="LayoutRoot_MouseLeftButtonUp">
private void LayoutRoot_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    //Do something
}
我在一个有两个文本框和一个复选框的页面上测试了这一点,这很有效。除了文本框和引发事件的复选框之外,我单击的所有地方。希望这有帮助