MouseEnter Stack

时间:2014-04-15 11:47:11

标签: silverlight stack mouseenter mouseleftbuttondown

在接下来的代码中,尝试获取被单击的边框的名称或文本块的子文本我的问题是没有“eaclick.Handled = true;”在代码中,它开始显示鼠标在单击之前输入的边框的所有名称,而不仅仅是通过添加“eaclick.Handled = true”而单击的oned。向我展示了鼠标进入的第一个边界,在我看来,所有的鼠标都在堆栈中保存,当点击进入leftmousedown时它会得到那个堆栈instand让我获得我想要的最后一个mouseenter任何人都可以解释我如何修复或我做错了什么?

for (int i = 0; i < NumPages; i++)
{

    Border borderaux = new Border();
    borderaux.Name = Convert.ToString(i);
    //borderaux.MouseEnter += borderaux_MouseEnter;
    Border clicked;
    borderaux.MouseEnter += (smouse, eamouse) =>
    {
        clicked = (Border)smouse;
        clicked.Cursor = Cursors.Hand;

        MouseLeftButtonDown += (sclick, eaclick) =>
        {
            if (eaclick.ClickCount == 1)
            {
                TextBlock opcao = (TextBlock)(clicked).Child;

                //string opcao="";
                MessageBox.Show("Pressed-->" + opcao.Text);
                //MessageBox.Show("Pressed-->" + clicked.Name);
                eaclick.Handled = true;
            }
        };

1 个答案:

答案 0 :(得分:0)

问题是在MouseEnter事件中使用MouseLeftButtonDown事件给出了问题,点击它时会显示x MessageBox,显示鼠标在点击之前悬停的所有边框数量,并显示修复程序我实际点击的边界。

    for (int i = 0; i < NumPages; i++)
    {

        Border borderaux = new Border();
        borderaux.Name = Convert.ToString(i);
        //borderaux.MouseEnter += borderaux_MouseEnter;
        Border clicked;
        borderaux.MouseLeftButtonDown += (sclick, eaclick) =>
        {

            if (eaclick.ClickCount == 1)
            {
                TextBlock opcao = (TextBlock)((Border)sclick).Child;

                //string opcao="";
                MessageBox.Show("Pressed-->" + opcao.Text);
                //eaclick.Handled = true;
            }
        };

        borderaux.MouseEnter += (smouse, eamouse) =>
        {
            clicked = (Border)smouse;
            clicked.Cursor = Cursors.Hand;

        };