Tag: winforms

如何在C#WinForms中刷新ListBox的DataSource

表单有一个combobox和一个ListBox。 当单击“添加”button时,我想将所选项目从combobox添加到列表框。 public partial class MyForm:Form { List<MyData> data = new List<MyData>(); private void ShowData() { listBox1.DataSource = data; listBox1.DisplayMember = "Name"; listBox1.ValueMember = "Id"; } private void buttonAddData_Click(object sender, EventArgs e) { var selection = (MyData)comboBox1.SelectedItem; data.Add(selection); ShowData(); } } 在这个例子中,select的项目被replace为ListBox内的新select。 我需要将该项目添加到列表中。 我的代码有什么问题? 谢谢。

你如何防止窗户被移动?

我将如何去停止表单被移动。 我有表单边框样式设置为FixedSingle,并希望保持这种方式,因为它在Vista中看起来不错:)

如何创build一个资源pipe理器的文件夹浏览器控制?

在VS2008中使用C#和WinForms,我想创build一个文件浏览器控件,看起来像Windows资源pipe理器中的左窗格。 令我惊讶的是,这样的控件默认不带.NET。 理想情况下,我希望其内容与Explorer中的内容完全相同。 例如,在Windows 7上,它应该显示collections夹和库伪文件夹。 当然,我不想为每个版本的Windows专门编写代码,只要我可以帮助它。 我浏览过,有一些这样的控件的例子,但它们都是手动滚动的,因此不会像Explorer中的那样100%地工作。 有没有什么办法可以简单地重用资源pipe理器控制呢? 或者,如果没有,访问它将显示的项目树?

WinForms文本框中的button

做winforms文本框有任何使embedded式button,在框的结尾可能的属性? 就像Chrome地址栏中的collections夹button一样: 我在一些Excel表格中也看到了类似下面的内容: 编辑 我跟着Hans Passant的答案,增加了一个点击事件处理程序,它似乎工作正常: protected override void OnLoad(EventArgs e) { var btn = new Button(); btn.Size = new Size(25, textBoxFolder.ClientSize.Height + 2); btn.Location = new Point(textBoxFolder.ClientSize.Width – btn.Width, -1); btn.Cursor = Cursors.Default; btn.Image = Properties.Resources.arrow_diagright; btn.Click += btn_Click; textBoxFolder.Controls.Add(btn); // Send EM_SETMARGINS to prevent text from disappearing underneath the button SendMessage(textBoxFolder.Handle, 0xd3, (IntPtr)2, […]

如何检测窗体何时被最小化?

我知道我可以通过WindowState获取当前状态,但是我想知道是否有任何事件会在用户尝试最小化表单时触发。

具有语法高亮显示的文本框/ richtextbox?

我在哪里可以find一个WinForms的控件,它将突出显示粘贴到它的源代码? 我想要一个语法高亮支持许多不同的语言,但如果它只适用于C#我会没事的。

从UI线程强制GUI更新

在WinForms中,如何强制从UI线程立即进行UI更新? 我所做的大致是: label.Text = "Please Wait…" try { SomewhatLongRunningOperation(); } catch(Exception e) { label.Text = "Error: " + e.Message; return; } label.Text = "Success!"; 在操作之前,标签文本不会设置为“请稍候…”。 我解决了这个使用另一个线程的操作,但它变得毛茸茸的,我想简化代码。

DateTimePicker:selectdate和时间

是否有可能使用DateTimePicker(Winforms)来selectdate和时间(在下拉列表中)? 你如何改变拾取值的自定义显示? 另外,是否可以让用户手动inputdate/时间?

使用C#/ Windows窗体的简单animation

我需要在C#/ Windows窗体中为万圣节显示敲出一个快速animation。 只有一些二维形状在一个坚实的背景上移动。 既然这只是一个快速的一次性项目,我真的不想安装和学习一整套新的工具。 (DirectX开发工具包,Silverlight,Flash等)。我也必须安装在多台电脑上,所以超出基本的.Net框架(2.0)将是一个痛苦的屁股。 对于工具我有VS2k8,25年的发展经验,独轮车,大屠杀斗篷,大约2天将其敲除。 在我的Atari 130XE上使用汇编程序之后,我还没有完成animation(用于翻页和玩家/导弹graphics)。 build议吗? 以下是我想知道的一些事情: 我可以通过摆弄它的OnPaint处理程序来绘制任何空的小部件(如面板),对吧? 这就是我如何绘制一个自定义的部件。 有没有比这更好的技术? 在Windows窗体中是否有这种types的页面翻转技术? 我不是在寻找高帧率,就像闪烁/绘图一样必要。 谢谢。 Post Mortem编辑…“几天后编码” 那么这个项目就完成了。 下面的链接派上用场,尽pipe其中有一些是404。(我希望SO会允许多于一个的答复被标记为“正确的”)。 我不得不克服的最大的问题是闪烁,当我试图直接在表单上画一个持续的错误。 对表单使用OnPaint事件:坏主意。 我从来没有那个工作; 大量的神秘错误(堆栈溢出或ArgumentNullExceptions)。 我使用一个大小的面板来填补表格,工作得很好。 无论如何,使用OnPaint方法是很慢的。 我在网上的某处看到,构buildPaintEventArgs的速度很慢,而且不是在开玩笑。 当我放弃这个时,许多闪烁就消失了。 跳过OnPaint / Invalidate()并且自己画一下。 设置窗体上的所有“双缓冲”选项仍然留下一些必须修复的闪烁。 (我发现有冲突的文档说“设置它们在控件上”和“设置它们在窗体上”。井控件没有.SetStyle()方法。)我没有testing没有他们,所以他们可能是做一些事情( this是表格): this.SetStyle(ControlStyles.UserPaint, true); this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); 所以代码的主力看起来像(面板控制): void PaintPlayField() { Bitmap bufl = new Bitmap(pf.Width, pf.Height); using (Graphics g = Graphics.FromImage(bufl)) […]

使WinForms TextBox的行为与浏览器的地址栏类似

当一个C#WinForms文本框收到焦点时,我希望它的行为就像您的浏览器的地址栏。 看看我的意思,点击你的网页浏览器的地址栏。 你会注意到以下行为: 在文本框中单击应该select所有的文本,如果文本框以前没有集中。 在文本框中鼠标向下拖动,只应select我用鼠标突出显示的文本。 如果文本框已经聚焦,则单击不会select所有文本。 以编程方式或通过键盘选项卡聚焦文本框应select所有文本。 我想在WinForms中完全做到这一点。 最快的警报:请在回答之前阅读以下内容! 多谢你们。 🙂 在.Enter或.GotFocus事件期间调用.SelectAll()将不起作用,因为如果用户单击文本框,则将将光标放在他单击的位置,从而取消select所有文本。 在.Click事件中调用.SelectAll()将不起作用,因为用户将无法使用鼠标select任何文本。 .SelectAll()调用将保持覆盖用户的文本select。 调用BeginInvoke((Action)textbox.SelectAll)在焦点/input事件input不起作用,因为它违反了上面的规则#2,它将继续覆盖用户的焦点select。