小编Far*_*man的帖子

获取相对于控件的光标位置 - C#

我想获得鼠标指针所在的控件的鼠标位置.这意味着当我将光标放在控件的起点(左上角)时,它应该给出(0,0).我使用以下代码:

    private void panel1_MouseMove(object sender, MouseEventArgs e)
    {
        this.Text = Convert.ToString(Cursor.Position.X + ":" + Cursor.Position.Y);         
    } 
Run Code Online (Sandbox Code Playgroud)

但是这给出了与屏幕无关的控制位置.

代码示例将不胜感激.

c# mouse winforms mouse-position

31
推荐指数
4
解决办法
7万
查看次数

从用户控件访问父控件 - C#

如何在C#(winform)中访问用户控件的父控件.我使用以下代码,但它不适用于所有类型的控件,如ListBox.

Control[] Co = this.TopLevelControl.Controls.Find("label7", true);
Co[0].Text = "HelloText"
Run Code Online (Sandbox Code Playgroud)

实际上,我必须从用户控件中添加放置在父"Form"上的Listbox中的项目.

c# user-controls winforms

30
推荐指数
2
解决办法
11万
查看次数

从所有表中选择 - MySQL

我有一个mySQL数据库listDB,它包含几个带有列名Product等的表.我想SELECT从所有表中Product Like%XYZ%,并在单独的表中显示搜索结果.

我试过这个:

SELECT * FROM * WHERE Product LIKE %XYZ%
Run Code Online (Sandbox Code Playgroud)

但它没有用.为此目的的正确查询是什么?

mysql sql

18
推荐指数
3
解决办法
11万
查看次数

克隆控件 - C#(Winform)

可能重复:
可以复制某个控件的所有属性吗?(C#窗口形式)

我必须创建一些类似于作为设计时创建的控件的控件.创建的控件应具有与预定义控件相同的属性,换句话说,我想复制控件.为此目的是否有任何一行代码?或者我必须用一行代码设置每个属性?我现在正在做的是:

        ListContainer_Category3 = new FlowLayoutPanel();
        ListContainer_Category3.Location = ListContainer_Category1.Location;
        ListContainer_Category3.BackColor = ListContainer_Category1.BackColor;
        ListContainer_Category3.Size = ListContainer_Category1.Size;
        ListContainer_Category3.AutoScroll = ListContainer_Category1.AutoScroll;
Run Code Online (Sandbox Code Playgroud)

c# winforms

11
推荐指数
1
解决办法
4万
查看次数

这有什么不对?在我的代码中(将图像插入数据库 - C#)

我试图从C#winform在我的访问数据库中插入一个图像.我使用以下代码:

    private void button1_Click(object sender, EventArgs e)
    {
        OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb");
        OleDbCommand cmd = con.CreateCommand();
        cmd.CommandText = "INSERT INTO Table1 (Product, Manufacturer, Description, Price, Image) VALUES ('Column1', 'Column2', 'Column3', 'Column4', @img)";
        byte[] yourPhoto = imageToByteArray(pictureBox1.Image);
        cmd.Parameters.AddWithValue("@img", yourPhoto);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }

    public byte[] imageToByteArray(System.Drawing.Image iImage)
    {
        MemoryStream mMemoryStream = new MemoryStream();
        iImage.Save(mMemoryStream, System.Drawing.Imaging.ImageFormat.Png);
        return mMemoryStream.ToArray();
    }
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,它向我显示一个错误:Syntax error in INSERT INTO statement. 我的代码中有什么问题?我可以使用相同的查询成功地将文本插入到数据库的字段中.

c# database winforms

5
推荐指数
1
解决办法
1040
查看次数

汇编语言中的getch等价物

我在汇编语言中使用C++编写x86,我需要用汇编语言而不是C++语言来了解getch等价物,因为我不想使用C++编程语言中的任何函数.

我在网上找到了代码,但是它将给定的值保存到变量并用C++创建.我想只使用该功能来停止程序,直到按下任何键.我不必在进一步的编程中使用输入的键值.

c c++ assembly

4
推荐指数
1
解决办法
2533
查看次数

获取特定的图像部分(图片)

我想剪切图片的特定部分,并用它来比较裁剪后的图像与HDD中存储的图像.问题是我不知道如何获得源图像的特定部分.我知道要裁剪的图像的位置(X,Y).

.net c# image-manipulation winforms

3
推荐指数
1
解决办法
2万
查看次数

在窗体边界处单击时获取鼠标光标的位置

只需拖动鼠标就可以很容易地将光标的位置放在窗体的边界之外,当位置发生变化时,它会向窗体发送许多值,形成下面的代码行.

        MessageBox.Show(Cursor.Position.ToString());
Run Code Online (Sandbox Code Playgroud)

MessageBox显示鼠标位置.

但是当用户点击表格边界时,我需要获得鼠标位置.不仅仅是悬停鼠标.我使用以下代码行来执行此操作:

    private void Form1_Deactivate(object sender, EventArgs e)
    {
        MessageBox.Show(Cursor.Position.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

我放置了MessageBox.Show(Cursor.Position.ToString()); 进入表单停用事件.当用户在表单外单击时,此事件肯定会发生.但是当用户没有单击外部但是使用ALT + TAB组合键更改程序时,它也会发送错误的值.实际上我必须从第一次点击的位置开始捕捉该区域的屏幕截图.因此,当在表单外部单击时,我需要光标的位置.喜欢: 在此输入图像描述

c# mouse-position

3
推荐指数
2
解决办法
2万
查看次数

访问Sender控件 - C#

如何访问发件人控件(即:更改位置等)?我在面板的运行时创建了一些图片框,将其click事件设置为一个函数.我想获取用户点击的图片框的位置.我也试过this.activecontrol 但它没有工作,并给出了窗体中控件的位置.我使用以下代码:

    void AddPoint(int GraphX, int GraphY,int PointNumber)
    {
        string PointNameVar = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
        string [] PointNameArr = PointNameVar.Split(',');

        PictureBox pb_point = new PictureBox();
        pb_point.Name = "Point"+PointNameArr[PointNumber];

        pb_point.Width = 5;
        pb_point.Height = 5;
        pb_point.BorderStyle = BorderStyle.FixedSingle;
        pb_point.BackColor = Color.DarkBlue;
        pb_point.Left = GraphX; //X
        pb_point.Top = GraphY; //Y
        pb_point.MouseDown += new MouseEventHandler(pb_point_MouseDown);
        pb_point.MouseUp += new MouseEventHandler(pb_point_MouseUp);
        pb_point.MouseMove += new MouseEventHandler(pb_point_MouseMove);
        pb_point.Click += new EventHandler(pb_point_Click);
        panel1.Controls.Add(pb_point);
    }


    void pb_point_Click(object sender, EventArgs e)
    {
        MessageBox.Show(this.ActiveControl.Location.ToString()); //Retrun location of another control.
    }
Run Code Online (Sandbox Code Playgroud)

AddPoint函数由循环调用,以创建多个PictureBox,它们给出X,Y和Point编号.根据代码创建的图片框命名为PointA...PointZ

c# dynamic winforms

3
推荐指数
1
解决办法
6633
查看次数

.Net中的计时器和循环是否准确?

在开发一个程序来计算由555定时器IC产生的脉冲的频率和脉冲宽度时,通过PC并行端口进入PC.我注意到每次运行代码时它都显示不同的值,所以我开始测试循环和定时器的准确性.我运行了以下代码,并指出它们不准确(我可能错了,请纠正我,如果我是!):

对于计时器:

    int sec = 0;
    private void button2_Click(object sender, EventArgs e)
    {
        sec = DateTime.Now.Second;
        i = 0;
        timer1.Enabled = true;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        if (sec == DateTime.Now.Second)
        {
            i++;
        }
        else
        {
            timer1.Enabled = false;
            MessageBox.Show(i.ToString(),"Timer Output");
        }
    }
Run Code Online (Sandbox Code Playgroud)

输出: 应该相同,但是:

在此输入图像描述 在此输入图像描述 在此输入图像描述

对于LOOP:

    private void button1_Click(object sender, EventArgs e)
    {
        i = 0;
        CheckForIllegalCrossThreadCalls = false;
        Thread t1 = new Thread(LoopTest);
        t1.Start();
    }

    void LoopTest()
    {
        System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
        sw.Start();
        this.Cursor = …
Run Code Online (Sandbox Code Playgroud)

.net c# loops timer

2
推荐指数
2
解决办法
3159
查看次数

用鼠标绘制矩形

有没有办法用起点和终点绘制矩形而不是起点和面积?我使用以下代码,通过鼠标在窗体上绘制矩形:

    System.Drawing.Graphics formGraphics;
    bool isDown = false;
    int initialX;
    int initialY;

    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        isDown = true;
        initialX = e.X;
        initialY = e.Y;
    }

    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        if (isDown == true)
        {
            this.Refresh();
            Pen drwaPen = new Pen(Color.Navy,1);
            int width = e.X - initialX, height = e.Y - initialY;
            //if (Math.Sign (width) == -1) width = width 
            //Rectangle rect = new Rectangle(initialPt.X, initialPt.Y, Cursor.Position.X - initialPt.X, Cursor.Position.Y - initialPt.Y);
            Rectangle rect = …
Run Code Online (Sandbox Code Playgroud)

c# drawing winforms

2
推荐指数
1
解决办法
1万
查看次数

在单个If语句中检查多个条件 - C#

我有一个表单,其中有许多textBoxes,需要填写三个文本框才能提交表单.我不想为每个文本框使用每个If块.有没有办法为所有三个文本框使用单个if语句?我使用以下代码:

if (textBox1.Text != "" || textBox2.Text != "" || textBox4.Text != "")
{
   // Code
}
else
{
   MessageBox.Show("Fill required fields");
}
Run Code Online (Sandbox Code Playgroud)

但是这个代码甚至可以填充单个文本狐狸,其余的所需文本框都是空的.

c# winforms

1
推荐指数
2
解决办法
1万
查看次数

从MySQL数据库获取图像 - C#

我必须在MySQL数据库中存储和恢复图像.为此我使用了本页面给出的说明:MySQL论坛,我可以通过以下代码成功存储Image:

SaveIamge:

    void SaveImage()
    {
        MemoryStream ms = new MemoryStream();
        pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        cmd = new MySqlCommand("INSERT INTO " + tableName + " ( Product, Manufacturer, Description, Price, Image) Values ('New_Product', 'New_Manufacturer', 'New_Description', '0', @Image)", conn);
        cmd.Parameters.Add(new MySqlParameter("@Image", Convert.ToBase64String(ms.ToArray())));
        cmd.ExecuteNonQuery();
    }
Run Code Online (Sandbox Code Playgroud)

但我无法从数据库中获取图像:我正在使用以下代码,请检查这里有什么问题:

GetThumbnail:

     void GetThumbnail()
     {
        string TN = tableNames[comboBox1.SelectedIndex];
        cmd = new MySqlCommand("SELECT Image FROM " + tableName + " WHERE Product = " + ProductTitle(), conn);
        object imgObj = cmd.ExecuteScalar();
        byte[] b = Convert.FromBase64String(Convert.ToString(imgObj));
        MemoryStream …
Run Code Online (Sandbox Code Playgroud)

c# mysql database

1
推荐指数
1
解决办法
8376
查看次数