Tag: winforms

DataSource更改时,ComboBox不会自动更新?

出于某种原因,当从DataSource(一个简单的BindingList)添加或删除项目时,ComboBox会相应地更新,但如果我编辑这样的项目,它就不会自动更新: myBindingList[index].Name = “NewName”; myBindingList[index].Value = newValue; 为了在编辑项目时更新它而不是创建或删除项目,我必须在更改后执行此操作: myComboBox.DataSource = null; myComboBox.DataSource = myBindingList; 这解决了问题,但它似乎是一个相当混乱的解决方案。 对于大型列表,它可能会变慢(我知道过早的优化),但仍然有办法强制ComboBox更新而不完全重新分配其DataSource? 谢谢阅读。

在.NET Winforms应用程序中创建图像按钮

我正在尝试在Visual Studio 2010中的.NET 4.0 Winforms应用程序中创建一个按钮,它只是一个图像。 我有一个无边框的窗口,并有一个背景图像,构成我的自定义皮肤为此应用程序。 对于窗口右上角的关闭/最小化按钮,我想创建2个简单的按钮,这些按钮只是看起来像典型的Windows关闭/最小化按钮的图像。 我可能会错误地设计这个设计,所以如果我愿意,请告诉我。 到目前为止,我已经确定我需要为Button创建一个仅渲染图像的子类。 最终实现需要为每个按钮状态(正常,hover,单击等)呈现不同的图像。 这是我到目前为止: public class ImageButton : Button { Pen pen = new Pen( Color.Red, 1.0f ); public ImageButton() { SetClientSizeCore( BackgroundImage.Width, BackgroundImage.Height ); } protected override void OnPaint( PaintEventArgs e ) { e.Graphics.DrawImage( BackgroundImage, 0, 0 ); //e.Graphics.DrawRectangle( pen, ClientRectangle ); //Rectangle bounds = new Rectangle( […]

System.Windows.Forms.SaveFileDialog不强制执行默认扩展

我正在尝试使SaveFileDialog和FileOpenDialog强制扩展用户输入的文件名。 我尝试过使用问题389070中提出的样本,但它没有按预期工作: var dialog = new SaveFileDialog()) dialog.AddExtension = true; dialog.DefaultExt = “foo”; dialog.Filter = “Foo Document (*.foo)|*.foo”; if (dialog.ShowDialog() == DialogResult.OK) { … } 如果用户在文件test.xml恰好存在的文件夹中键入文本test ,则对话框将建议名称test.xml (而我真的只想在列表中看到*.foo )。 更糟糕的是:如果用户选择了test.xml ,那么我确实会将test.xml作为输出文件名。 如何确保SaveFileDialog真的只允许用户选择*.foo文件? 或者至少,当用户点击“ Save时,它会替换/添加扩展名? 建议的解决方案(实现FileOk事件处理程序)只执行部分工作,因为如果文件名具有错误的扩展名,我真的想要禁用“ Save按钮。 若要保留在对话框中并更新FileOk处理程序中文本框中显示的文件名,以反映具有正确扩展名的新文件名,请参阅以下相关问题 。

显示另一个与C#生成的表单相邻的表单

如何从Form1生成一个新表单,例如Form2 ,但确保Form2与Form1相邻,例如:

如何向ClickOnce应用程序添加先决条件?

我想在我的Click Once应用程序中添加先决条件。 这是问题所在。 该程序位于服务器中,客户端从特定URL安装应用程序。 我想在用户首次下载并安装它时自动安装先决条件(例如,Crystal Report Viewer),我该怎么办? 我正在使用C#Windows Forms和.NET Framework 4.0

如何在Visual C#中制作Windows 95样式按钮?

我正在编写一个程序,我只是想知道如何在Windows 95中放置看起来像的按钮: http://sofzh.miximages.com/c%23/win95servertypes.gif 我正在使用Visual C#Express 2010和Winforms。 这可能在我上面描述的编译器/ IDE中吗?

如何使用C#中的文本框过滤datagridview?

我厌倦了使用文本框过滤数据网格视图,文本框包含在标签页中,但它不起作用,这里是代码: private void textBox1_TextChanged(object sender, EventArgs e) { try { ((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = “like ‘%” + textBox1.Text.Trim() + “%’ “; } catch (Exception) { } }

在c#Winforms中对DataGridview进行分组

嗨,我在c#winforms的datagridview中有以下数据: A列| B栏| C列| 组 Register 1 | 10,00 | 15,00 | Group 1 Register 2 | 10,00 | 15,00 | Group 1 Register 3 | 10,00 | 15,00 | Group 2 Register 4 | 10,00 | 15,00 | Group 2 我想以下面的forms得到这个: A列| B栏| C栏 第1组 注册1 | 10,00 | 15,00 注册2 | 10,00 | […]

观察控制以确定被触发的事件?

有没有办法列出特定WinForms控件的所有触发事件,而无需为每个可能的事件显式创建处理程序? 例如,我可能希望在各种数据绑定操作期间看到在DataGridView和BindingSource之间触发的事件序列。

仅使用Timer一次

我想在主表单初始化后的1秒内只使用一次计时器。 我认为以下会有一个消息框说“Hello World”只有一次,但实际上每隔一秒就会出现一个新的消息框“Hello World”。 为什么这样? 我把t.Stop()放在了tick事件中。 另外,我是否需要以某种方式处理计时器以避免内存泄漏? Timer t = new Timer(); t.Interval = 1000; t.Tick += delegate(System.Object o, System.EventArgs e) { MessageBox.Show(“Hello World”); t.Stop(); }; t.Start(); 请帮助并显示是否有更好的方法吗? 谢谢。