Tag: winforms

侦听COM端口时跨线程操作无效

可能重复: 使跨线程操作无效 跨线程操作无效 我正在尝试侦听COM端口,以便为SerialPort.DataReceived事件创建新的处理程序。 逻辑很简单 – 我写了一些东西给TextBox1,按下Button1,我的文本应该在Label1中显示它自己。 但我的应用程序不想运行,因为它抛出“交叉线程操作无效”错误。 我做了一些搜索并找到了Invoke对象 – 我如何在我的例子中使用它? 为什么我需要包含Invoke逻辑? namespace WindowsApplication1 { public partial class Form1 : Form { SerialPort sp = new SerialPort(); public Form1() { InitializeComponent(); sp.DataReceived += MyDataReceivedHandler; } private void Form1_Load(object sender, EventArgs e) { } private void MyDataReceivedHandler(object sender, SerialDataReceivedEventArgs e) { try { //sp.PortName = “COM3”; […]

DataGridView单元格中的多行

使用C# Windows Forms ; 我有一个带有许多单元格的DataGridView 。 我想在单元格中显示数字(从1-9开始)。 数字应以3×3格式放在彼此之下。 我环顾四周,最后只得到了一个相当复杂的richtextbox单元的自定义实现。 有没有办法我可以绘制一个custom rectangle ,然后将其实现为单元格的backgroundimage或什么? 细胞需要重新绘制几次。 所以我不能只调用我想的paint事件。 注意:用户不得编辑单元格。

TreeView搜索

此函数仅查找树视图中的第一个节点,其中包含SearchText。 private TreeNode SearchNode(string SearchText,TreeNode StartNode) { TreeNode node=null; while (StartNode!= null) { if (StartNode.Text.ToLower().Contains(SearchText.ToLower())) { node = StartNode; break; }; if (StartNode.Nodes.Count != 0) { node=SearchNode(SearchText, StartNode.Nodes[0]);//Recursive Search if (node != null) { break; }; }; StartNode = StartNode.NextNode; }; return node; } private void button1_Click(object sender, EventArgs e) { string SearchText = this.textBox1.Text; […]

C#/ winforms:如何最好地绑定propertygrid和System.Data.DataRow

我有几个字段的System.Data.DataRows,其中大多数只是普通类型,如int,single,string。 使用propertygrid使它们可编辑的最佳方法是什么? 无论datarow有哪种字段,它都应该自动工作,但它不应该显示所有字段。 我想提供一个应该隐藏的属性列表。 由于DataTable是自动生成的,我无法添加自定义属性,如[可浏览(假)] 非常感谢!

使用ownerdraw和virtualmode在listview中闪烁

我正在使用listview控件并设置以下参数: this.listView1.BackColor = System.Drawing.Color.Gainsboro; this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.columnHeader1, this.columnHeader2}); this.listView1.FullRowSelect = true; this.listView1.HideSelection = false; this.listView1.Location = new System.Drawing.Point(67, 192); this.listView1.Name = “listView1”; this.listView1.Size = new System.Drawing.Size(438, 236); this.listView1.TabIndex = 0; this.listView1.UseCompatibleStateImageBehavior = false; this.listView1.View = System.Windows.Forms.View.Details; this.listView1.DrawColumnHeader += new System.Windows.Forms.DrawListViewColumnHeaderEventHandler(this.listView1_DrawColumnHeader); this.listView1.RetrieveVirtualItem += new System.Windows.Forms.RetrieveVirtualItemEventHandler(this.listView1_RetrieveVirtualItem); this.listView1.DrawSubItem += new System.Windows.Forms.DrawListViewSubItemEventHandler(this.listView1_DrawSubItem); 两行提供一些随机文本。 拥有者绘图很简单: private void listView1_DrawSubItem(object sender, […]

将PictureBox的图像从我的资源更改为图像?

如何从我的资源中将PictureBox图像设置为图像? (我尝试了这个没有成功: pictuerbox.Image = “img_location”; )

在.NET中使用ScrollBar的DropDown菜单

我正在尝试使用类似于Windows资源管理器中使用的Windows Vista / 7面包屑栏的用户控件。 但是,当我显示包含许多子项的面包屑的下拉菜单时,我会得到一个很长的列表,有时会超出屏幕大小。 但是,在Windows Vista / 7示例中,一次最多显示18个项目,当子项目数超过此数字时,右侧会出现滚动条(18)。 我想知道是否有人知道复制微软的方法。 [也就是说,如何在具有自动滚动function的控件中放置下拉菜单。] 谢谢。 亚历克斯

如何在C#中创建“不可聚焦”的表单?

我想在C#中创建一个无法接受焦点的表单,即当我单击表单上的按钮时,焦点不会从当前具有焦点的应用程序中被盗。 有关此示例,请参阅Windows屏幕键盘。 请注意,单击按钮时,焦点不会从您当前使用的应用程序中获取。 我该如何实现这种行为? 更新: 事实certificate,它就像重写CreateParams属性并将WS_EX_NOACTIVATE添加到扩展窗口样式一样简单。 谢谢你指点我正确的方向! 不幸的是,这会产生不良的副作用,它会与表单移动混淆,即您仍然可以在屏幕上拖放表单,但拖动时不会显示窗口的边框,因此很难精确定位它。 如果有人知道如何解决这个问题,将不胜感激。

如何使用shell的默认处理程序打开文件?

我们的客户端(winforms应用程序)包括文件浏览器。 我希望用户能够使用shell的默认处理程序打开所选文件。 我怎么做? 我已经读过我应该使用Win32 API而不是注册表,但我更喜欢只涉及.NET的解决方案。

WinForm应用程序中的NHibernate和AUTOFAC

我正在寻找一个很好的教程,在WinForm应用程序中使用NHibernate配置AUTOFAC,在创建表单时注入ISession并在表单关闭时处理ISession。 我发现了很多MVC和ASP.NET示例但没有使用WinForm。 你能为我指出正确的方向吗?