在接下来的代码中,尝试获取被单击的边框的名称或文本块的子文本我的问题是没有“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;
}
};
答案 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;
};