首页 文章

将来自MySQL数据库的粘贴复制到C#中的另一个程序表单

提问于
浏览
0

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

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

即一个应用程序有一个带有5个文本框的表单:textbox1,textbox2,textbox3,textbox4,textbox5和数据库表有5列存储数据 .

设计的应用程序将显示来自数据库的数据,并且在复制元组时,它必须作为[0],[1],a [2],a [3],a [4]存储在数组中 . 然后在将其粘贴到具有这5个文本框的另一个应用程序时,只有[0]的数据必须存储到textbox1,只有[1]的数据必须存储到textbox2,依此类推 .

这可以实现吗?如果可以的话,如何解决这个问题 . 如果我问得太多,请原谅我 .

此致,Nipun Shakya

1 回答

  • 0

    好吧,你显然不能让你的用户直接与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 .

    • 而不是一个 TextBox 中的几行,你应该将数据放到目标 TextBoxes ;也许你可以把它们放在 List<TextBox> 中,以便简单地访问它们 .

相关问题