【发布时间】:2013-04-07 22:53:55
【问题描述】:
WinForms 文本框是否有任何属性可以使嵌入按钮在框的末尾成为可能?
类似于 Chrome 地址框上的收藏按钮:
我还在一些 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, (IntPtr)(btn.Width << 16));
base.OnLoad(e);
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
private void btn_Click(object sender, EventArgs e) {
MessageBox.Show("hello world");
}
【问题讨论】:
-
@Highcore,你是一头无可救药的小马。请将 [winforms] 标签添加到您忽略的标签中,我不想再看到您的 wpf 咆哮了。
-
@HighCore 在汉斯所说的同一件事之前,我已经提醒过你。我强烈建议您从现在开始避免 WinForms 问题。
-
@HansPassant .... 我刚下班回来,正在处理问题——看来你们这些好人把他吓跑了!