Tag: winforms

winforms ComboBox中的单个项目颜色?

我有一个困境,我有一个表格,其中包含许多combobox,其中包含在某些情况下可能无效/过期的信息/选项/项目。 我不能简单地从项目中删除过时的信息,但我确实希望在选项无效时给用户一个直观的线索。 我想在项目中着色(可能是红色)来表明它们是否及何时无效。 我不一定需要阻止用户选择无效选项,只是让他们在视觉上意识到他们正在这样做。 可以这样做吗? 你能 – 动态地 – 改变combobox的colo(u)r吗? 谢谢,

即使专注于另一个控件,如何更改listview选择的行backcolor?

我有一个程序,它使用条形码扫描仪作为输入设备,这意味着我需要将焦点保持在文本框上。 该程序具有listview控件,当扫描某个条形码时,我以编程方式选择其中一个项目。 我通过以下方式设置行的背景颜色: listviewitem.BackColor = Color.LightSteelBlue; 我尝试过的事情: listview.HideSelection设置为false 设置颜色后调用listview.Focus() listviewitem.Focused设置为true call listview.Invalidate call listview.Update() call listview.Refresh() 以上的不同组合 我还在计时器中进行了上述组合,以便在不同的线程上调用它们但仍然没有成功。 有任何想法吗? 更多信息: 这里的关键是控制焦点。 当我选择其中一个项目时, listview控件没有焦点 。 我通过这样做选择一个项目: listView1.Items[index].Selected = true; Focus始终位于文本框中。 电脑没有键盘或鼠标,只有条形码阅读器。 我有这个代码来关注文本框: private void txtBarcode_Leave(object sender, EventArgs e) { this.txtBarcode.Focus(); } 你需要有一个文本框添加该代码来模拟我的问题。

如何确保在双监视器方案中“附加”监视器上显示表单?

我有一个应用程序,其中有一个表单,我想在第二个屏幕上显示。 平均值如果应用程序在屏幕A上运行,当我单击菜单以显示表格时,它应显示在屏幕B上,如果应用程序在屏幕B上运行,当我点击菜单显示表格时,它应显示在屏幕A上。

如何修复IE WebBrowser控件中的内存泄漏?

我试图在C#Winform应用程序中嵌入一个WebBrowser控件。 这听起来很容易。 但是我发现每次调用Navigate方法时,WebBrowser控件都会占用大量内存。 永远不会释放内存。 内存使用量增长和增长…… 网上有很多人有完全相同的问题,但我还没有找到令人满意的答案。 这是迄今为止我发现的关于这个问题的最佳讨论: IE WebBrowser控件中的内存泄漏 有人建议升级到IE8以解决问题。 但是,无论用户是否安装了最新的IE版本,我都需要一个解决方案。 我无法控制用户环境。 有谁知道如何释放WebBrowser控件占用的内存? 有解决方法吗? 是否有WebBrowser控件的替代品? 更新:我刚刚做了一些测试。 在工作中,我正在运行Windows XP和IE6。 记忆在那里不会增长。 调用导航方法时内存增加但一段时间后释放。 在家我运行Vista并升级到IE8。 在这里,我也不再看到问题了。 看起来问题是IE7特有的。 因此,问题应该改为“如何在安装IE7时修复IE WebBrowser控件中的内存泄漏”。 任何人都可以确认这个问题是否特定于IE7?

Windows窗体的透明度表示文本框

我在C#中使用Windows窗体,我需要使文本框的背景颜色透明。 我有一个从0到255的轨道栏应该控制它,但我遇到了一些麻烦。 我今天早些时候提出了一个问题问同样的问题,但没有成功。 这是我目前的代码: private void trackAlpha_ValueChanged(object sender, EventArgs e) { newColor = Color.FromArgb(trackAlpha.Value, colorDialog.Color.R, colorDialog.Color.G, colorDialog.Color.B); colorDialog.Color = newColor; // The Windows dialog used to pick the colors colorPreview.BackColor = newColor; // Textbox that I’m setting the background color } 问题是绝对没有任何反应。 关于为什么这不起作用的任何想法? 在上一个问题上,这个好人讲了一些关于SetStyle(ControlStyles.SupportsTransparentBackColor, true); ,但我不知道我应该把它放在哪里。

服务器客户端发送/接收简单文本

我有一个功课来构建一个应用程序,它将在服务器和客户端之间发送和接收简单的字符串。 我知道如何建立连接,但不知道如何发送和接收字符串。 这是我的代码: public partial class Form1 : Form { private Thread n_server; private Thread n_client; private Thread n_send_server; private TcpClient client; private TcpListener listener; private int port = 2222; private string IP = ” “; private Socket socket; public Form1() { InitializeComponent(); } private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } public void […]

按名称在Windows窗体中查找控件

我正在开发一个应用程序,它在运行时从XML文件添加对象(基本上是Windows窗体控件)。 应用程序需要访问已添加的对象。 对象将添加到面板或组框中。 对于面板和组框,我有Panel.Controls [“object_name”]来访问对象。 这仅在将对象直接添加到同一面板上时才有用。 在我的情况下,主面板[pnlMain,我只能访问此面板]可能包含另一个面板,此面板[pnlChild]再次包含一个groupbox [gbPnlChild],groupbox包含一个按钮[button1,我想访问此按钮] 。 我有以下方法: Panel childPanel = pnlMain.Controls[“pnlChild”]; GroupBox childGP = childPanel.Controls[“gbPnlChild”]; Button buttonToAccess = childGP[“button1”]; 当父母知道时,上述方法很有用。 在我的场景中,只知道要访问的对象的名称[button1]而不是其父对象。 那么如何通过名称访问此对象,与其父对象无关? 是否有像GetObject(“objName”)或类似的方法?

如何用c#制作两个透明层?

有三个连续的图层, picturebox1(.jpg) -> label1 -> picturebox2(.png transparent)我想要的是使label1和pictrurebox2对pict​​urebox1透明,这样label1可以通过picturebox2看到但它无法正常工作.. public Form1() { InitializeComponent(); label1.Parent = pictureBox1; label1.BackColor = Color.Transparent; pictureBox2.Parent = pictureBox1; pictureBox2.BackColor = Color.Transparent; picturebox2.BringToFront(); } 所以请帮助我

Windows窗体中的C#垂直标签

是否可以在Windows窗体中垂直显示标签?

在C#中编写表单时无法查看设计器

我正在关注winforms的这个教程,到目前为止,教程正在编写表单而不使用工具箱。 我相信它很快就会更深入地介绍工具箱。 在本教程之后,我在以下两段代码中进行了部分类: 第一档 : using System; using System.Windows.Forms; public class Numeric : System.Windows.Forms.TextBox { public Numeric() { } } public partial class Exercise { private Numeric txtbox; System.ComponentModel.Container components; } 第二档 : using System; using System.Windows.Forms; public partial class Exercise : Form { private void InitializeComponent() { txtbox = new Numeric(); Controls.Add(txtbox); } public […]