Tag: winforms

Treeview绘制故障

我为每个TreeView节点实现了一个多色系统。 但每次我扩展子节点时,它都会消耗,但也会在我的rootNode上绘制节点(图像2和3)。 代码来自我之前的问题 ,这就是bug的样子 如果我决定关闭每个节点并重新扩展毛刺消失了。(图4) 问题似乎与Bounds ,这就是抽签不在正确位置的原因。 知道为什么吗? private void treeView1_DrawNode(object sender, DrawTreeNodeEventArgs e) { string[] texts = e.Node.Text.Split(); using (Font font = new Font(this.Font, FontStyle.Regular)) { using (Brush brush = new SolidBrush(Color.Red)) { e.Graphics.DrawString(texts[0], font, brush, e.Bounds.Left, e.Bounds.Top); } using (Brush brush = new SolidBrush(Color.Blue)) { SizeF s = e.Graphics.MeasureString(texts[0], font); e.Graphics.DrawString(texts[1], font, brush, […]

如何在PropertyGrid中动态显示或隐藏属性?

我正在使用PropertyGrid来配置对象。 我需要能够隐藏或显示一些属性,具体取决于其他属性的值。 如何实现这一目标? 我知道Browsable属性,但它只能在编译时使用。

表格外的C#鼠标移动

我试图在我的代码中跟踪鼠标移动。 在窗体窗口中跟踪鼠标移动很容易,但我想跟踪窗口外的鼠标移动。 我的意思是我将最小化我从托盘和跟踪它的位置 。 知道如何使用示例代码或示例说明链接跟踪表单窗口外的鼠标movemtns吗? 我正在使用c#,我想知道如何。 谢谢你的帮助。 对于表单窗口我尝试了这个链接 ,它的工作完美。 我想要的是。 我想了解用户何时从左到右或从右到左移动鼠标并显示有关警告的消息。 我希望我的应用程序作为一项服务(实际上它不是那么必要,如果你可以帮助表单应用程序它也是公平的)和启动与操作系统。 并跟踪鼠标移动并捕获用户是否左右移动他/她的鼠标 。 而已。 我希望这个编辑将是非常具体的解释。

需要将string / char转换为ascii值

我需要将char转换为hex值。 请参阅Ascii表,但我有几个例子如下: char 1 = 31 2 = 32 3 = 33 4 = 34 5 = 35 A = 41 a = 61等 因此string str =“12345”; 需要获得转换后的str =“3132333435”

使用编程排序绑定到DataGridView的可排序BindingList

我已经在http://msdn.microsoft.com/en-us/library/aa480736.aspx上实现了SortableSearchableList类,并为它添加了一个Sort方法,如下所示: public void Sort(PropertyDescriptor prop, ListSortDirection direction) { ApplySortCore(prop, direction); } 这个类在通过单击任何列标题对DataGridView进行排序时起作用,但是我需要能够以编程方式调用指定列的Sort方法(在本例中使用sortButton控件)。 我在网上找到的几个代码示例建议获取列的PropertyDescriptor并将其传递给ApplySortCore方法。 我还没有那个工作。 我可以获取DataGridView或SortableSearchableList的PropertyDescriptorCollection属性,但似乎无法获取Find方法来获取指定列/成员的PropertyDescriptor。 这是我的其余代码: namespace SortableBindingListTest { public partial class Form1 : Form { private SortableSearchableList alarms = new SortableSearchableList(); public Form1() { InitializeComponent(); alarms.Add(new Tags(“some text”, “1”)); alarms.Add(new Tags(“more text”, “2”)); alarms.Add(new Tags(“another one”, “3”)); dataGridView1.AutoGenerateColumns = false; dataGridView1.AllowUserToAddRows = true; dataGridView1.EditMode […]

如何获得TextBox的真实高度?

我的第一个想法是它会是这样的: int height = textbox.lines.length * lineheight; 但它只计算“\ xd \ n”并且可以包裹线条。 当一切都可见时(内部文本的高度),我可以获得显示的行数或文本框的实际高度吗?

数据网格视图的单个单元格中的C#多色文本

是否可以更改datagridview单元格中存在的子字符串的颜色?

如何更改图片框(winform)的边框颜色?

我想根据不同的事件打开和关闭图片框周围的边框颜色/样式。 是否有属性或function可以帮助我实现这一目标?

WinForms:找到最小化表单的大小而不使用FormWindowState.Normal

是否有一种简单的方法来确定它在WindowState = Normal中具有的Form的大小,而不实际更改Form状态? 这是我现在做的(C#代码): public class MyForm: Form { public void MyMethod() { // … FormWindowState oldState = this.WindowState; this.WindowState = FormWindowState.Normal; Point windowLocation = this.Location; Size windowSize = this.Size; this.WindowState = oldState; // … } } 这就是我希望代码看起来像: public class MyForm: Form { public void MyMethod() { // no state change here Point windowLocation = […]

为什么我没有得到“跨线程操作无效”错误

我使用BackgroundWorker并执行此操作: private void loadNewAsyncToolStripMenuItem_Click(object sender, EventArgs e) { this.Text = “RunWorkerAsync()”; backgroundWorkerLoading.RunWorkerAsync(); } private void backgroundWorkerLoading_DoWork(object sender, DoWorkEventArgs e) { UnsafeThreadMethod(“hello”); EvenUnsaferThreadMethod(); } 而现在这两种方法。 private void UnsafeThreadMethod(string text) { toolStripLabelRssFeedData.Text = text; } private void EvenUnsaferThreadMethod() { panelLoading.Visible = true; } 我不明白为什么UnsafeThreadMethod不会抛出以下exception,但EvenUnsaferThreadMethod会抛出exception。 跨线程操作无效:控制’panelLoading’从其创建的>线程以外的线程访问。 根据消息,因为toolStripLabelRssFeedData是在同一个线程上创建的,但事实并非如此。 我以为我不能调用主线程创建的控件,必须使用ProgressChanged事件。 这是怎么回事? 我还有第二个问题。 当我可以使用ProgressChanged时,这样做有什么好处? 我该怎么办? private void EvenUnsaferThreadMethod() { if (panelLoading.InvokeRequired) […]