首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在wpf中调用KeyEventArgs方法

如何在wpf中调用KeyEventArgs方法
EN

Stack Overflow用户
提问于 2017-02-02 07:39:49
回答 2查看 1.1K关注 0票数 3

在列表框内,如果双击列表框项,则将列表框项的值分配给列表框内的动态文本框。(我创建了一个带有列表框的动态文本框).Then我需要修改文本框values.After (单击enter键),文本框值添加到列表框项,然后动态文本框removed.when单击添加到列表框项目的初始值。

我在MouseEventArg方法中有问题,如何调用keyeventArgs方法。

C#

代码语言:javascript
复制
  System.Windows.Controls.TextBox dynamicTextBox = new System.Windows.Controls.TextBox();

    string previousvalue;

    private void items_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        //Get the index value
        var index = lstbxindex.Items.IndexOf(lstbxindex.SelectedItem);


        //set the textbox height and width property 
        dynamicTextBox.Width = 230;
        dynamicTextBox.Height = 50;

        //Add a textbox to the listbox 
        this.lstbxindex.Items.Add(dynamicTextBox);

        //To assign the selectedITem values to textbox
        dynamicTextBox.Text = lstbxindex.SelectedItem.ToString();

        //Get the textbox values before editing
        previousvalue = dynamicTextBox.Text;

        //Remove the values from the listbox item
        lstbxindex.Items.RemoveAt(index);


        dynamicTextBox.AcceptsReturn = true;

    }




private void checkenterclicked(object sender, System.Windows.Forms.KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            EnterClicked(sender, e);
            //dynamicTextBox.PreviewKeyDown += EnterClicked;
        }
    }

    private void EnterClicked(object sender, System.Windows.Forms.KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            using (DatabaseConnector databaseConnection = new DatabaseConnector(ApplicationConstants.ConnectionString))
            using (ProjectsTable projectsTable = new ProjectsTable(databaseConnection))
            {


                //Here Filter the Name from project Table which DbActive state is zero
                projectsTable.AddFilter(new Filter<ProjectsColumnTypes>(ProjectsColumnTypes.DbActive, CompareOperator.Equals, true));
                projectsTable.Read();

                projectsTable.AddFilter(new Filter<ProjectsColumnTypes>(ProjectsColumnTypes.Name, CompareOperator.Equals, dynamicTextBox.Text));

                projectsTable.Read();

                foreach (DtoProjectsRow row in projectsTable.Rows)
                {
                    //Guid DbId = row.DbId;
                    Guid DbId = row.DbId;

                    var UpdateRow = projectsTable.NewRow();


                    UpdateRow.Name = dynamicTextBox.Text;

                    UpdateRow.DbId = DbId;


                    UpdateRow.DbActive = true;

                    // Alter the row to the table.
                    projectsTable.AlterRow(UpdateRow);

                    // Write the new row to the database.
                    projectsTable.Post();

                    //Add the items in comboBox
                    lstbxindex.Items.Add(dynamicTextBox.Text);
                }
                // dynamicTextBox = e.Source as System.Windows.Controls.TextBox;

            }
        }
        else
        {
            if (e.KeyCode == Keys.Escape)
            {
                lstbxindex.Items.Add(previousvalue);
                lstbxindex.Items.Remove(dynamicTextBox);
            }
        }
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-02 08:36:41

试试这个:

订阅动态文本框键事件。把它放在构造函数中。例如:

代码语言:javascript
复制
System.Windows.Controls.TextBox dynamicTextBox = new System.Windows.Controls.TextBox();

string previousvalue;

    public MainWindows()
    {
        InitializeComponent();

        //subscribe to previewKeyDown, KeyDown will not work for enter key
        dynamicTextBox.PreviewKeyDown += dynamicTextBox_KeyDown;
    }

    // this will hit if any key is pressed
    void dynamicTextBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
             using (DatabaseConnector databaseConnection = new DatabaseConnector(ApplicationConstants.ConnectionString))
             using (ProjectsTable projectsTable = new ProjectsTable(databaseConnection))
            {


            //Here Filter the Name from project Table which DbActive state is zero
            projectsTable.AddFilter(new Filter<ProjectsColumnTypes>(ProjectsColumnTypes.DbActive, CompareOperator.Equals, true));
            projectsTable.Read();

            projectsTable.AddFilter(new Filter<ProjectsColumnTypes>(ProjectsColumnTypes.Name, CompareOperator.Equals, dynamicTextBox.Text));

            projectsTable.Read();

            foreach (DtoProjectsRow row in projectsTable.Rows)
            {
                //Guid DbId = row.DbId;
                Guid DbId = row.DbId;

                var UpdateRow = projectsTable.NewRow();


                UpdateRow.Name = dynamicTextBox.Text;

                UpdateRow.DbId = DbId;


                UpdateRow.DbActive = true;

                // Alter the row to the table.
                projectsTable.AlterRow(UpdateRow);

                // Write the new row to the database.
                projectsTable.Post();

                //Add the items in comboBox
                lstbxindex.Items.Add(dynamicTextBox.Text);
            }
            // dynamicTextBox = e.Source as System.Windows.Controls.TextBox;

        }
    }

private void items_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    //Get the index value
    var index = lstbxindex.Items.IndexOf(lstbxindex.SelectedItem);


    //set the textbox height and width property 
    dynamicTextBox.Width = 230;
    dynamicTextBox.Height = 50;

    //Add a textbox to the listbox 
    this.lstbxindex.Items.Add(dynamicTextBox);

    //To assign the selectedITem values to textbox
    dynamicTextBox.Text = lstbxindex.SelectedItem.ToString();

    //Get the textbox values before editing
    previousvalue = dynamicTextBox.Text;

    //Remove the values from the listbox item
    lstbxindex.Items.RemoveAt(index);


    dynamicTextBox.AcceptsReturn = true;

}
票数 2
EN

Stack Overflow用户

发布于 2017-02-02 07:52:00

你不能就这么做吗

代码语言:javascript
复制
System.Windows.Forms.KeyEventArgs ee = new System.Windows.Forms.KeyEventArgs();
ee.KeyCode = Keys.Enter;
EnterClicked(sender,ee);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41996601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档