标签: focusmanager

Xamly将键盘焦点设置为DataGridTemplateColumn单元格中的元素?

我在DataGridTemplateColumn.CellEditing DataTemplate中设置了东西.我希望在单元格编辑加载并显示模板时,键盘焦点应该被赋予模板中的某个控件.

考虑这个例子,当你进入编辑模式时,文本框不是以键盘为中心的:

<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
    <DataGrid Name="dg" AutoGenerateColumns="False">
      <DataGrid.Columns>
        <DataGridTemplateColumn Header="Title">
          <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
              <TextBlock Text="{Binding Title}"/>
            </DataTemplate>
          </DataGridTemplateColumn.CellTemplate>
          <DataGridTemplateColumn.CellEditingTemplate>
            <DataTemplate>
              <TextBox Text="{Binding Title}"/>
            </DataTemplate>
          </DataGridTemplateColumn.CellEditingTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Header="Value">
          <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
              <TextBlock Text="{Binding Note}"/>
            </DataTemplate>
          </DataGridTemplateColumn.CellTemplate>
          <DataGridTemplateColumn.CellEditingTemplate>
            <DataTemplate>
              <TextBox Text="{Binding Note}"/>
            </DataTemplate>
          </DataGridTemplateColumn.CellEditingTemplate>
        </DataGridTemplateColumn>
      </DataGrid.Columns>      
    </DataGrid>
  </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
Class MainWindow 

  Private Sub Window_Loaded(ByVal sender As Object,
                            ByVal e As RoutedEventArgs) Handles MyBase.Loaded

    Dim data As New List(Of Item) From
      {New Item,
       New Item,
       New Item} …
Run Code Online (Sandbox Code Playgroud)

keyboard wpf xaml focus focusmanager

2
推荐指数
1
解决办法
3795
查看次数

当窗口没有焦点时如何从控件中移除焦点?(否则当窗口再次获得焦点时它将恢复)

我需要在窗口没有焦点TextInput时移除焦点。Adobe Air但我找不到正常的方法来做到这一点。

这是一个示例应用程序:

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx"

                       >
    <fx:Script>
        <![CDATA[
            protected function onFocusIn(event:FocusEvent):void{
                input.appendText('I');
            }

            protected function onFocusOut(event:FocusEvent):void{
                input.appendText('o');
            //  input.focusManager.deactivate();
            //  stage.focus = null;  
            //  focusManager.setFocus(input2);
            //  stage.focus = stage; 
            }

        ]]>
    </fx:Script>
    <s:VGroup>      
        <s:TextInput id="input" focusIn="onFocusIn(event)" focusOut="onFocusOut(event)" />
        <s:TextInput id="input2" /> 
    </s:VGroup>
Run Code Online (Sandbox Code Playgroud)

  1. stage.focus = null不起作用 -stage.focus已经是null当窗口没有焦点时,所以它不起作用。

  2. input.focusManager.deativate()确实可以,但这个管理器似乎用于其他控件,所以这不是一个好的选择。文档中说

    如果多个 IFocusManagerContainer 同时可见,则 SystemManager 会激活和停用 FocusManager。

    但在这个示例应用程序中,我有两个 TextInput,当我停用第一个 TextInput 的 focusManager 时,第二个 TextInput 不再恢复对 alt-tab 的焦点。 …

apache-flex air actionscript-3 focusmanager

2
推荐指数
1
解决办法
3078
查看次数

USB设备连接时启动我的应用程序

当我们的USB设备连接时,我需要启动我的应用程序.

我第一次尝试这是一个后台应用程序,注意插入USB设备时.当它注意到我们的设备连接时,它调用ShellExecute()并启动我们的应用程序.

除了在Windows 8中,这很有效.假设我们在Windows 8的"开始"屏幕上.在这种情况下,应用程序在后台启动,并且开始屏幕保持在前面.

我认为这是一个"焦点"问题,因为我实际上希望做的是从"开始"屏幕"偷取焦点".

http://blogs.msdn.com/b/oldnewthing/archive/2009/02/20/9435239.aspx

由于我的后台应用程序没有焦点("开始"屏幕具有焦点;此外,我的应用程序没有UI),因此无法将焦点放在我的前台应用程序上.

让我说,总的来说,我讨厌集中窃取.启动用户想要使用应用程序对我们的用户来说是一个很大的帮助.

我该如何解决这个问题?也许答案是以编程方式要求启动屏幕启动我的应用程序,但我没有看到这样做的方法:

http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/9ed23f32-0708-48a8-9ff7-5fce6dbe123f/windows-8-start-screen-api

也许我正以错误的方式接近这一点.建议?

windows delphi focus focusmanager

2
推荐指数
1
解决办法
1397
查看次数

在keyBinding中聚焦导航

在我的表单中,当我按下ENTER键盘上的按钮时,okAction()应调用该方法(并完美调用).

我的问题是焦点状态,当我填写文本字段然后按下ENTER按钮时,okAction()没有调用,因为焦点在第二个文本字段(不在面板上).

怎么解决这个问题?

public class T3 extends JFrame implements ActionListener {

JButton cancelBtn, okBtn;
JLabel fNameLbl, lNameLbl, tempBtn;
JTextField fNameTf, lNameTf;

public T3() {
    add(createForm(), BorderLayout.NORTH);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(400, 500);
    setVisible(true);
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new T3();
        }
    });
}

public JPanel createForm() {
    JPanel panel = new JPanel();
    panel.getInputMap().put(KeyStroke.getKeyStroke("ENTER"), "Button");
    panel.getActionMap().put("Button", new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            okAction(); …
Run Code Online (Sandbox Code Playgroud)

java swing key-bindings focusmanager

2
推荐指数
1
解决办法
189
查看次数

动态更改FocusManager.FocusedElement

我有如下WPF xaml代码:

  <StackPanel  FocusManager.FocusedElement="{Binding FocusedElement}">
    <TextBox Name="txtbox1" Text="FirstText"/>
    <TextBox Name="txtbox3" Text="SecondText"/>
    <TextBox Name="txtbox2" Text="ThirdText"/>
  </StackPanel>
Run Code Online (Sandbox Code Playgroud)

如何在ViewModel中将FocusedElement绑定到属性?类似的代码如下:

Switch(Type)
{
Case "FirstType" :
  FocusedElement = "txtbox1";
break;
Case "SecondType" :
   FocusedElement = "txtbox2";
break;
Case "ThiredType" :
   FocusedElement = "txtbox3";
break;
}
Run Code Online (Sandbox Code Playgroud)

wpf bind focusmanager

1
推荐指数
1
解决办法
9075
查看次数

通过editCellAt(row,col)在单元格上强制编辑时,JTable单元格不会触发键事件

以下是我的代码片段.我有一个JTable.我已经扩展了DefaultCellEditor来创建我自己的编辑器.我为单元格添加了关键的监听器和鼠标监听器.我也有一个JButton.当我点击JButton时,我希望JTable中的第一个单元格进入编辑模式.为此我使用了requestFocus和editCellAt(0,0).我已将此代码放入actionperformed中.

public void actionPerformed(ActionEvent e)
{
     System.out.println("action performed");

     if(e.getSource().equals(btn))
     {
    oTable.requestFocus();
    oTable.setRowSelectionInterval(0, 0);
    oTable.editCellAt(0, 0);
     }
}
Run Code Online (Sandbox Code Playgroud)

这将光标放在第一个单元格中.但是,当我输入任何内容时,关键事件不会被触发!注意:如果我使用鼠标单击单元格然后键入,它会触发键事件.但我不想做这个额外的点击.

java swing jtable focusmanager

0
推荐指数
1
解决办法
1779
查看次数