Tag: winforms

如何在winform和wpf中以编程方式鼠标移动,单击,右键单击和按键等?

如何在winform和wpf中以编程方式鼠标移动,单击,右键单击和按键等。 如果可能的话,请帮我编写代码片段。

有没有一种快速的方法来获得鼠标下的控制?

我需要在另一个控件的事件中找到鼠标下的控件。 我可以从GetTopLevel开始并使用GetChildAtPoint进行迭代,但有更快的方法吗?

在鼠标hover文本时显示工具提示

当鼠标hover在我的自定义富编辑控件中的链接上时,我想显示工具提示。 请考虑以下文本: 我们都在晚上睡觉 。 就我而言, 睡眠这个词就是一个链接。 当用户在链接下移动鼠标时,在这种情况下“睡眠”,我想显示链接的工具提示。 以下是我的想法,但他们没有工作 1)捕获OnMouseHover if(this.Cursor == Cursors.Hand) tooltip.Show(textbox,”My tooltip”); else tooltip.Hide(textbox); 但这没有用。 UPDATE 提到的链接不是 URL,即这些是自定义链接,因此Regex在这里不会有太多帮助,它可以是任何文本。 用户可以选择创建链接。 虽然我没有尝试过GetPosition方法,但我认为它在设计和维护方面不会那么优雅。 让我说我在我的richedit框中有以下行 我们晚上睡觉 。 但蝙蝠保持清醒 。 蟑螂在夜间变得活跃 。 在上面的句子中,当鼠标hover在它们上面时,我想要三个不同的工具提示。 sleep -> Human beings awake -> Nightwatchman here active -> My day begins 我困住OnMouseMove如下: 使用Messagebox OnMouseMove( ) { // check to see if the cursor […]

向MS Chart控件C#添加滚动条

请理解我知道有关于这个问题的其他线索,但我的需求是不同的。 基本上在我看到人们说用MSChart实现滚动条之前,他们使用了 .Size = … 要么 .View = … 但是,这会使滚动条自动显示,并且此滚动条包含一个按钮,单击该按钮会导致条形图消失,使图表显示所有数据,并且无法在不重新启动应用程序的情况下将滚动条带回图表。 所以我请问,有没有办法在我的图表的X轴上包含一个水平滚动条? 我需要这样我可以在100秒块的块上查看我的图表数据。 即0 – 100,然后单击滚动条将带我到100 – 200块。 提前谢谢你们!!!!! 我也用C#编码

在后台捕获键盘按键

我有一个在后台运行的应用程序。 每当用户随时按F12时 ,我都必须生成一些事件。 所以我需要这样才能捕获按键。 在我的应用程序中,如果用户按任何时间F10,将执行某些事件。 我不明白该怎么做? 有谁知道怎么做? N:B:这是一个winforms应用程序。 它不需要关注我的forms。 我的主窗口可能仍保留在系统托盘中,但仍然需要捕获按键。

在主UI线程的Continuation中,SynchronizationContext.Current为null

我一直在尝试在Winforms应用程序中追踪以下问题: SynchronizationContext.Current在任务的继续(即.ContinueWith )中为空,它在主线程上运行(我希望当前的同步上下文是System.Windows.Forms.WindowsFormsSynchronizationContext )。 以下是演示此问题的Winforms代码: using System; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); TaskScheduler ts = TaskScheduler.FromCurrentSynchronizationContext(); // Get the UI task scheduler // This line is required to see the issue (Removing this causes the problem to go away), since […]

C#WinForms:如何设置主函数STAThreadAttribute

在后台线程中调用saveFileDialog.ShowDialog()时出现以下exception: 在进行OLE调用之前,必须将当前线程设置为单线程单元(STA)模式。 确保您的Main函数标记了STAThreadAttribute。 根据这个 : 要解决此问题,请插入以下语句: Threading.Thread.CurrentThread.ApartmentState = Threading.ApartmentState.STA; 在Application.Run语句之前的Main中。 但是Application.Run语句在Program.cs中,它似乎是生成的代码,因此任何更改都可能意外丢失。 此外,我找不到在项目或主窗体属性中将当前线程设置为STA的方法,但也许我在错误的地方查找。 在后台线程中调用saveFileDialog.ShowDialog()的正确方法是什么?

tabControl中的关闭按钮

是否有人可以告诉我如何在C#中使用tabControl在每个选项卡中添加关闭按钮? 我计划使用按钮pic替换我的标签中的[x] .. 谢谢

在RichTextBox中重置RTF?

我正在尝试“重置”我的RichTextBox格式(WinForms,而不是WPF)。 我以前用过 richTextBox.Text = richTextBox.Text; 然而,这似乎突然让我失望了。 现在无论我将richTextBox.Text设置richTextBox.Text ,它都会保留一些rtf格式。 我试过了 richTextBox.Rtf = richTextBox.Text; 但是,抱怨格式不正确。 必须有一个更好的方法来做到这一点。 (当然,选择整个事物,然后重置背面颜色,前颜色和字体工作,但这会导致闪烁,因为选择整个事物然后取消选择,加上它更慢并且需要更多代码。)任何人都有任何的想法? 编辑:我已经让这个工作了: string tempTxt = richTextBox.Text; richTextBox.Clear(); richTextBox.Text = tempTxt; 但必须有更好的方法,对吗? 编辑2:要清楚,我希望在保留文本的同时删除所有格式。 看起来第一次编辑中的代码将会发布,除非其他任何人都有更高效/更好的编码方式。 编辑3: richTextBox.Text = richTextBox.Text.ToString(); 似乎没有用,因为它仍然无法清除所有格式。 我不喜欢上面第一个编辑中的方法的原因是,当文本框清除它然后重新输入文本时,它会使文本框“闪烁”。 看起来应该只是一个richTextBox.ResetFormatting()方法,或者某种方式来访问相同的function,因为Clear()方法清楚(没有双关语)除了简单地清除所有文本之外还会进行某种格式化重置。 总结一下: 有没有办法(如果是这样,是什么)重置RichTextBox中的文本格式而不清除上面示例中的文本(因为这会产生不希望的闪烁)?

C#中UserControl中的Text属性

我有一个内部TextBox控件。 我想在UserControl的Text属性和TextBox的Text属性之间建立直接关系。 我意识到的第一件事是Text没有显示在UserControl的属性中。 然后我添加了Browsable(true)属性。 [Browsable(true)] public override string Text { get { return m_textBox.Text; } set { m_textBox.Text = value; } } 现在,文本将显示一段时间,但随后会被删除。 这是因为信息不会自动写入xxxx.Designer.cs文件中。 如何改变这种行为呢?