gpt4 book ai didi

c# - 如何在 wpf 中调用 KeyEventArgs 方法

转载 作者:行者123 更新时间:2023-11-30 23:16:27 27 4
gpt4 key购买 nike

在列表框内,如果双击列表框项,列表框项的值分配给列表框内的动态文本框。(我在列表框内创建了一个动态文本框)。然后我需要修改文本框值。之后单击 enter 键,将文本框值添加到列表框项中,然后将动态文本框删除。单击 esc 键时,将初始值添加到列表框项中。

我在 MouseEventArg 方法内部遇到问题,如何调用 keyeventArgs 方法。

C#

  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);
}
}
}

最佳答案

试试这个:

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

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;

}

关于c# - 如何在 wpf 中调用 KeyEventArgs 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41996601/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com