从MySQL数据库复制粘贴到另一个程序';s在C#中的形式

本文关键字:复制 数据库 MySQL 程序 另一个 | 更新日期: 2023-09-27 18:23:58

示例场景:从Microsoft Word复制一行时,它会被复制到剪贴板,文本也可以粘贴到记事本和其他人。

我的问题是:我想开发一个可以从MySQL数据库复制元组的应用程序。从复制的元组中,每列的数据都应存储在一个数组中,在粘贴到另一个应用程序的文本框时,数据必须每个文本框粘贴一个数据,直到元组结束。

即,应用程序有一个包含5个文本框的表单:文本框1、文本框2、文本框3、文本框4、文本框5,数据库表有5列存储数据。

设计的应用程序将显示数据库中的数据,在复制元组时,它必须以[0]、a[1]、a[2]、a[3]、a[4]的形式存储在数组中。然后,在将其粘贴到具有这5个文本框的另一个应用程序时,只有[0]的数据必须存储到文本框1,只有[1]的数据必须保存到文本框2,依此类推。

这能实现吗?如果可以的话,这个问题怎么解决呢。如果我要求太多,请原谅。

谨致问候,Nipun Shakya

从MySQL数据库复制粘贴到另一个程序';s在C#中的形式

很明显,你不能让你的用户直接与mySql交互,但我想这不是你的意思?

你可以控制两端,源和目标?如果是这样的话,你所需要做的就是决定一种可以放入剪贴板并再次检索的格式

下面是一个简单的示例,让您开始学习。

仅在降级时,它使用ListView,在Ctl-C时,将每个项目的文本复制到Clipboard,用垂直选项卡分隔。

当TextBox中出现Ctl-V时,所有这些字符串都会被再次拆分,并分别插入一行。

private void lv_files_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.C && e.Modifiers == Keys.Control)
    {
        string data = "";
        foreach (ListViewItem lvi in lv_files.Items)  data += lvi.Text + "'v";
        Clipboard.SetData(DataFormats.Text, data); ;
        e.Handled = true;
    }
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
    {
        string data = Clipboard.GetData(DataFormats.Text).ToString();
        var parts = data.Split(''v');
        foreach (string p in parts) textBox1.Text += p + "'r'n";
        Clipboard.Clear();
        e.Handled = true;
    }
}

这应该通过以下功能进行扩展:

  • 还要照顾Shift-InsertCtrl-Insert
  • 根据您的实际问题进行调整:
    • 使用您的源代码,而不是ListView;您不能与DataTable进行用户交互,因此您需要一些代理控制。当然,脑海中会浮现一个DataGridView,但它确实可能是一个可以集中注意力并听KeyDown的东西
    • 应该将数据放入目标TextBoxes,而不是一个TextBox的几行;也许你可以把它们放在List<TextBox>中,使访问它们变得简单