我想获得鼠标指针所在的控件的鼠标位置.这意味着当我将光标放在控件的起点(左上角)时,它应该给出(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#(winform)中访问用户控件的父控件.我使用以下代码,但它不适用于所有类型的控件,如ListBox.
Control[] Co = this.TopLevelControl.Controls.Find("label7", true);
Co[0].Text = "HelloText"
Run Code Online (Sandbox Code Playgroud)
实际上,我必须从用户控件中添加放置在父"Form"上的Listbox中的项目.
我有一个mySQL数据库listDB,它包含几个带有列名Product等的表.我想SELECT从所有表中Product Like%XYZ%,并在单独的表中显示搜索结果.
我试过这个:
SELECT * FROM * WHERE Product LIKE %XYZ%
Run Code Online (Sandbox Code Playgroud)
但它没有用.为此目的的正确查询是什么?
可能重复:
可以复制某个控件的所有属性吗?(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#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++编写x86,我需要用汇编语言而不是C++语言来了解getch等价物,因为我不想使用C++编程语言中的任何函数.
我在网上找到了代码,但是它将给定的值保存到变量并用C++创建.我想只使用该功能来停止程序,直到按下任何键.我不必在进一步的编程中使用输入的键值.
我想剪切图片的特定部分,并用它来比较裁剪后的图像与HDD中存储的图像.问题是我不知道如何获得源图像的特定部分.我知道要裁剪的图像的位置(X,Y).
只需拖动鼠标就可以很容易地将光标的位置放在窗体的边界之外,当位置发生变化时,它会向窗体发送许多值,形成下面的代码行.
MessageBox.Show(Cursor.Position.ToString());
Run Code Online (Sandbox Code Playgroud)
但是当用户点击表格边界时,我需要获得鼠标位置.不仅仅是悬停鼠标.我使用以下代码行来执行此操作:
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组合键更改程序时,它也会发送错误的值.实际上我必须从第一次点击的位置开始捕捉该区域的屏幕截图.因此,当在表单外部单击时,我需要光标的位置.喜欢:

如何访问发件人控件(即:更改位置等)?我在面板的运行时创建了一些图片框,将其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
在开发一个程序来计算由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) 有没有办法用起点和终点绘制矩形而不是起点和面积?我使用以下代码,通过鼠标在窗体上绘制矩形:
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) 我有一个表单,其中有许多textBoxes,需要填写三个文本框才能提交表单.我不想为每个文本框使用每个If块.有没有办法为所有三个文本框使用单个if语句?我使用以下代码:
if (textBox1.Text != "" || textBox2.Text != "" || textBox4.Text != "")
{
// Code
}
else
{
MessageBox.Show("Fill required fields");
}
Run Code Online (Sandbox Code Playgroud)
但是这个代码甚至可以填充单个文本狐狸,其余的所需文本框都是空的.
我必须在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)