Tag: winforms

在C#中播放多个wav文件

我有一个应用程序,当按下或单击一个键或按钮时我需要播放一个wav文件,我使用SoundPlayer类,但当我尝试播放另一个wav文件同时正在播放的那个文件停止。 有没有办法同时播放多个wav文件? 如果它可以请你给我举例或教程? 这是我到目前为止所得到的: private void pictureBox20_Click(object sender, EventArgs e) { if (label30.Text == “Waiting 15.wav”) { MessageBox.Show(“No beat loaded”); return; } using (SoundPlayer player = new SoundPlayer(label51.Text)) { try { player.Play(); } catch (FileNotFoundException) { MessageBox.Show(“File has been moved.” + “\n” + “Please relocate it now!”); } } } 谢谢!

右键单击以选择ListBox中的项目

我正在尝试制作一个项目列表,您可以通过右键单击并启用上下文菜单来执行多项操作。 我已经完成了,没有任何问题。 但我想拥有它,以便当您右键单击某个项目而不是选择当前项目时,选择鼠标所在的项目。 我已经研究了这个和其他相关问题,并且我尝试使用indexFromPoint(我通过我的研究发现),但每当我右键单击某个项目时,它总是只清除所选项目而不显示上下文菜单,因为我设置它,以便它没有出现,如果没有选定的项目。 这是我目前使用的代码: ListBox.SelectedIndex = ListBox.IndexFromPoint(Cursor.Position.X, Cursor.Position.Y);

如何精确测量弦的宽度?

首先,问题How to measure width of character precisely? 得到回答, 对这种情况并没有多大帮助,所以这不是重复的 。 我有一个字符串。 我使用graphics.DrawString绘制,但是当我需要在它之后添加另一个时,我需要知道前一个字符串的精确宽度。 为此,我使用graphics.MeasureString: StringFormat format = new StringFormat(StringFormat.GenericTypographic); format.Alignment = StringAlignment.Center; format.Trimming = StringTrimming.None; format.FormatFlags = StringFormatFlags.MeasureTrailingSpaces; 我已经尝试了许多其他函数,就像TextRendered.MeasureText但是所有函数都失败了,并且所有可能的参数组合都是如此。 MeasureString的上述组合最接近我的需要(它在大多数情况下都适用,特殊字符除外),但是使用像#破坏它这样的字符。 宽度更短或更长。 有没有办法获得DrawString函数生成的文本的精确大小? DrawString如何计算绘图区域的大小? 它必须是一些其他function,因为尺寸总是不同的。 整个应用程序的源代码在这里https://gitorious.org/pidgeon/pidgeon-main/ (我使用它的文件,是https://gitorious.org/pidgeon/pidgeon-main/blobs/master/scrollback /SBABox.cs )

如何定制像这样的按钮控制?

我想像这样制作一个自定义按钮控件(图像按钮没问题)。 我是新用户,因此我无法在此处发布图片。 所以我在这里上传了这张照片 在尝试了一些教程后,我现在有点绝望了 任何建议都非常感谢。 谢谢

富文本框内的链接?

我知道richtextboxes可以检测链接(比如http://www.yahoo.com ),但有没有办法让我添加看起来像文本但链接的链接? 在哪里可以选择链接的标签? 例如,它显示为点击此处转到雅虎而不是它出现在http://www.yahoo.com 编辑:忘了,我正在使用Windows窗体 编辑:是否有更好的使用(如更容易格式化)?

WPF在WinForms应用程序中使用,在哪里放置应用程序资源?

目前,我们在WinForms应用程序中托管了许多WPF控件。 使用System.Windows.Forms.Application.Run(…)方法和使用ElementHost托管的WPF控件启动应用程序。 在普通的WPF应用程序中,我定义了一个System.Windows.Application对象( App.xaml )并在其上调用run。 通常,任何应用程序级别的WPF资源都会进入那里。 我们没有这个。 如何为WPF控件指定应用程序级资源,但仍作为WinForms应用程序运行?

我可以使用hwnd / NativeWindow设置我的WinForms表单所有者的行为吗?

我的应用程序是一个vb6可执行文件,但系统中的一些较新的表单是用C#编写的。 我希望能够使用主应用程序窗口的句柄设置C#表单的Owner属性,以便在我的应用程序和其他应用程序之间来回切换时,对话框保持在顶部。 我可以获得主应用程序窗口的hwnd。 我不确定我能从那里做些什么? 更新08年10月20日17:06: 斯科特, 谢谢你的回复。 我忽略了Show / ShowDialog方法参数不是Form类型 – 我只查看Owner属性。 我稍微修改了我正在使用的代码 – 我们有一个组件通常加载我们的Forms并调用ShowDialog。 我的代码如下所示: Form launchTarget = FormFactory.GetForm(xxx); // psuedo-code for generic form loader launchTarget.StartPosition = FormStartPosition.CenterParent; IWin32Window parentWindow = GetWindowFromHwnd(hwnd); launchTarget.ShowDialog(parentWindow); GetWindowFromHwnd是代码的方法包装版本: private IWin32Window GetWindowFromHost(int hwnd) { IWin32Window window = null; IntPtr handle = new IntPtr(hwnd); try { NativeWindow nativeWindow = new […]

在tablelayoutpanel中的某些单元格周围绘制边框

不要问为什么,但我有要求在TableLayoutPanel某些单元格周围绘制边框。 例如,为简单起见,假设我有1行,5列TableLayoutPanel 。 每个单元格中都有一个按钮。 我想在前3个单元格周围绘制一个框,然后在最后2个单元格周围绘制另一个框。 总共有两个盒子。 有关如何实现这一目标的任何建议? 谢谢。

更改数据源时,C#DataGridView未更新

我有一个对象列表 List results; 所以我将列表添加到datagridview dataGridView.DataSource = phase3Results; 所以我有一些下拉框,在下拉框中选中项目的任何更改时决定列表结果,所以我的列表结果发生了变化,但是在datagridview上没有反映出来。 有没有办法“刷新”变化?

如何在Winforms文本框上允许CTRL-V(粘贴)?

我在Windows窗体上有几个文本框。 我无法使用CTRL-V将文本粘贴到任何文本中,但我仍然可以右键单击并选择粘贴。 这很烦人。 我已经尝试使用表单的KeyPreview作为true和false。 TextBox.ShortcutsEnabled也是如此。