Tag: winforms

Winforms:可拖动的透明矩形

早上, 我现在准备好在这一点上抓住自己的眼睛。 我正在使用.NET 3.5上的Windows窗体构建一个基本的图像编辑器,我需要的是一个“选择工具”。 单击按钮时需要显示此工具,并且该工具将是固定大小,它需要是具有透明中心的拖放式矩形。 这样做的目的就是像“画框”一样,用户可以将矩形拖放到图像的一部分上,然后点击另一个按钮来快照该点矩形内的任何内容。 (请注意:我不需要橡皮筋矩形,它必须是固定尺寸,在整个表格上可拖动并且透明)。 我花了几天时间在互联网上搜索,这个网站正在寻找可能的解决方案,其中没有一个是有用的。 我已设法使控件可拖动 – 但这会带来透明度方面的问题。 下面是使控件可拖动的代码,但我不确定这是正确的路径。 class ControlMover { public enum Direction { Any, Horizontal, Vertical } public static void Init(Control control) { Init(control, Direction.Any); } public static void Init(Control control, Direction direction) { Init(control, control, direction); } public static void Init(Control control, Control container, Direction direction) { EditorForm.blnSelectArea […]

是否有类似于Windows窗体的Snoop(WPF)或FireBug(ASP.NET)?

我想用鼠标指向我的应用程序中的某个区域,并知道UserControl的名称。

SendMessage与WndProc

我正在尝试扩展TextBox控件以添加水印function。 我在CodeProject上找到的例子是使用导入的SendMessage函数。 [DllImport(“user32.dll”, CharSet = CharSet.Auto, SetLastError = false)] static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, uint wParam, [MarshalAs(UnmanagedType.LPWStr)] string lParam); void SetWatermark() { SendMessage(this.Handle, 0x1501, 0, “Sample”); } 我想知道为什么不使用受保护的WndProc void SetWatermark() { var m =new Message() { HWnd = this.Handle, Msg = 0x1501, WParam = (IntPtr)0, LParam = Marshal.StringToHGlobalUni(“Sample”) }; WndProc(ref m); } 两者似乎都很好。 […]

如何从目录中获取文件名,而不是整个路径

我使用下面的方法来获取文件名.. 但它返回整个路径….现在我不想得到整个路径.. 我只想要文件名而不是整个路径…… 我怎么能得到只有文件名而不是整个路径 path = c:\ docs \ doc \ backup-23444444.zip string[] filenames = Directory.GetFiles(targetdirectory,”backup-*.zip”); foreach (string filename in filenames) { } 任何人都会对此有所帮助….. 非常感谢…

WebBrowser键盘快捷键

我有一个WebBrowser控件显示一些HTML。 我希望用户能够复制整个文档,但不能做任何其他事情。 我将IsWebBrowserContextMenuEnabled和WebBrowserShortcutsEnabled属性设置为false ,我想处理KeyUp并在用户按Ctrl + C时运行一些代码。 我怎样才能做到这一点? WebBrowser控件不支持键盘事件。 我尝试使用KeyPreview的表单的KeyUp事件,但它根本没有触发。 编辑 :这是我的解决方案,灵感来自Jerb的回答。 class CopyableWebBrowser : WebBrowser { public override bool PreProcessMessage(ref Message msg) { if (msg.Msg == 0x101 //WM_KEYUP && msg.WParam.ToInt32() == (int)Keys.C && ModifierKeys == Keys.Control) { DoCopy(); return true; } return base.PreProcessMessage(ref msg); } void DoCopy() { Document.ExecCommand(“SelectAll”, false, null); Document.ExecCommand(“Copy”, false, null); Document.ExecCommand(“Unselect”, […]

以编程方式调整DataGridView的大小以删除滚动条

我有一个DataGridView,其数据数据的用户可定义的列数(约6-60)。 在较高端,网格中的数据量超过可以一次显示在屏幕上的数据量。 我有一个与数据一致的图表。 我想保持两者同步,以便图表上的特定时间T在网格中垂直排列。 要做到这一点,我想让DGV足够宽以避免水平滚动条,使图形同样宽,然后将滚动卸载到容器控件上。 但是,我找不到一种方法来直接获取我需要设置DGV的宽度,以便从中删除滚动条。

在运行时期间动态地向TableLayoutPanel添加控件

我有一个TableLayoutPanel,以两列和0行开头。 我需要做的是,动态添加一行并用不同的控件填充两列(它将是面板)。 在Form1中,我以这种方式创建TableLayout: TableLayoutPanel Table = new TableLayoutPanel(); Table.Location = new Point(10, 40); Table.Size = new Size(620,100); Table.AutoSize = true; Table.Name = “Desk”; Table.ColumnCount = 2; Table.RowCount = 0; Table.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; Table.GrowStyle = System.Windows.Forms.TableLayoutPanelGrowStyle.AddRows; this.Controls.Add(Table); 之后在运行时我将获得需要多少行,以及是否将填充Panel或某些Label。 可能会发生在同一行中,将是Panel,right Label等。

右键单击选择.Net TreeNode

当用户右键单击时,我试图在我的树视图上显示一个弹出菜单 – 允许他们选择要应用于所选节点的上下文敏感操作。 用户必须左键单击节点,然后右键单击以选择。 是否可以右键单击节点选择该节点 – 如果是,那么执行此操作的最佳方法是什么。

将IME放在从Control派生的自定义文本框中

我在C#.net 3.5中创建了自己的单行文本框控件 我从头开始写这个,包括我自己的选择代码,滚动,复制/粘贴等。它甚至可以选择从左到右的文本,而不是我曾经使用过的… 我遇到的问题是与IME(输入法编辑器)集成。 IME在某种程度上确实有效,但我遇到了一些问题。 我在这里列出其中一个。 通常,使用TextBox,IME构造将在TextBox中呈现。 但是,在我的控制中,IME显示在屏幕的右下角。 我试着查看其他自定义控件,包括SharpDevelop中使用的控件。 但是,这也存在同样的问题。 键入中文,日文或韩文导致IME的内容在屏幕的右下角完成。 我需要一些关于如何在我自己的文本框中完成此操作的指针,我查看了Windows API for IME,但是有很多function,我不知道从哪里开始。 那么,有什么想法吗? 如果任何代码示例都在C ++(托管/非托管)或VB.net中,那就没问题。 我可以轻松地移动它。

将SignalR用于桌面应用程序是否正确?

SignalR适用于Windows桌面应用程序(winforms / wpf)吗? 使用SignalR与Windows桌面应用程序有什么优缺点? 有任何性能方面的考虑吗? 我想在服务器和许多客户端之间建立实时连接。 连接将是不变的。