【问题标题】:c# Delete key for listboxc#列表框的删除键
【发布时间】:2013-06-25 14:05:43
【问题描述】:

我有一个列表框,我可以在其中使用按钮删除项目,但我也希望能够使用键盘上的删除键删除,我在谷歌上找不到方法,所以请有人帮助我

编辑 它是一个winform应用程序

这是删除按钮的代码:

private void Button3Click(object sender, EventArgs e)
{
    var application = this.GetCurrentApplication();

    if (application == null)
    {
        MessageBox.Show("No Application selected");
        return;
    }

    if (MessageBox.Show("You are about to delete application: " + Environment.NewLine + _applicationListBox.SelectedItem + Environment.NewLine + "Are you sure you want to delete the application?", "", MessageBoxButtons.YesNo) == DialogResult.No)
    {
        MessageBox.Show("The application will not be deleted.", "", MessageBoxButtons.OK);
    }
    else if (this._applicationListBox.SelectedIndex >= 0)
    {
        int index = _applicationListBox.SelectedIndex;

        _toepassingIniFile.ToePassingen.Remove(application);
        if (index == _toepassingIniFile.ToePassingen.Count)
            --index;
        application = index < 0 ? null : _toepassingIniFile.ToePassingen[index];

        _toepassingIniFile.Save(application);

        _applicationListBox.DataSource = null;
        _applicationListBox.DataSource = _toepassingIniFile.ToePassingen;

        _applicationListBox.SelectedIndex = index;
    }
}

感谢琼斯的回答

private void ApplicationListBoxPreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
    {
        if (e.KeyCode ==Keys.Delete )
        {
           deletefromlistbox();
        }
        if (e.KeyCode == Keys.Insert)
        {
            Refreshapplication();
        }

    }

刷新应用

private void Refreshapplication()
    {
        var newapplication = new NewApplication(_toepassingIniFile);
        if (newapplication.Run())
        {
            _applicationListBox.DataSource = null;
            _applicationListBox.DataSource = _toepassingIniFile.ToePassingen;
            _applicationListBox.SelectedIndex = _toepassingIniFile.ToePassingen.Count - 1;
            _controllercombobox.DataSource = null;
            _controllercombobox.DataSource = _controllerIniFile.Controllers;
        }
    }

【问题讨论】:

  • 将 previewkeydown 事件添加到列表框。然后在事件处理程序中验证键是否删除
  • 你能提供更多的上下文吗?安装的应用程序?网络应用程序?
  • 它是一个winform应用程序

标签: c# winforms


【解决方案1】:
applicationListBox.PreviewKeyDown +=new PreviewKeyDownEventHandler(applicationListBox_PreviewKeyDown);

然后

void applicationListBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Delete)
    {
        //delete
    }
}

然后像 msm8bball 所说的那样抽象出该代码,以便按钮单击和 previewkeydown 调用删除方法

【讨论】:

  • 它并没有完全正确,正确的答案应该在问题中,但多亏了你我想通了
【解决方案2】:

将删除的逻辑抽象到它自己的函数中。让 Button3Click 调用这个函数。

然后,添加一个处理删除的新函数,并让它也调用新函数。使用此事件:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.onpreviewkeydown.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多