Tag: winforms

了解MVC模式

我在理解MVC模式方面遇到了一些麻烦。 我明白我们正试图从业务逻辑中分离出GUI,尽pipe我在理解方面存在问题。 从我所了解的View来看,就是用户所看到的。 所以它通常是窗口/窗体。 Controller介于View和Model 。 控制器将使数据在两个方向上“stream动”。 它也将在需要的时候保持状态(如果我有一个5级的向导, Controller负责确保它们按照正确的顺序进行)。 该Model,是我的应用程序逻辑的核心所在。 这个观点是否正确? 为了把它变成更有意义的东西,我将尝试用WinForms(没有ASP.NET或者WPF,请示意)绘制一个简单的例子 – 对于java人群,从我所了解的Swing中以相似的方式工作到WinForms的方式!),看看我是否正确,我会提出我一直这样做的问题。 假设我有一个只包含一个类的模型(为了简单起见,我知道这会让这个例子看起来很笨,但是这样做更简单): class MyNumbers { private IList<int> listOfNumbers = new List<int> { 1, 3, 5, 7, 9 }; public IList<int> GetNumbers() { return new ReadOnlyCollection<int>(listOfNumbers); } } 现在是时候让我的Controller : class Controller { private MyNumbers myNumbers = new MyNumbers(); public IList<int> GetNumbers() { […]

C#自动完成

我正在尝试将自动完成function添加到文本框,结果来自数据库。 他们来的格式是 最后,第一中间 目前您必须input[001] …才能显示条目。 所以问题是我想要它完成,即使我先input名字 。 所以,如果一个入口是 史密斯,约翰D 如果我开始input约翰,那么这个条目应该显示在自动完成的结果。 目前代码看起来像 AutoCompleteStringCollection acsc = new AutoCompleteStringCollection(); txtBox1.AutoCompleteCustomSource = acsc; txtBox1.AutoCompleteMode = AutoCompleteMode.Suggest; txtBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; …. if (results.Rows.Count > 0) for (int i = 0; i < results.Rows.Count && i < 10; i++) { row = results.Rows[i]; acsc.Add(row["Details"].ToString()); } } 结果是包含查询结果的数据集 该查询是使用类似语句的简单search查询。 如果我们不使用自动完成并将结果扔到数组中,则会返回正确的结果。 有什么build议? 编辑: […]

如何在WinForms的NumericUpDown选项卡中select所有文本?

当用户键入我的NumericUpDown我想所有文本被选中。 这可能吗?

我怎样才能允许ctrl + a与WinForm中的TextBox?

我问这个问题已经问(甚至回答)在这里: 为什么一些文本框不接受控制+一个快捷方式来select所有默认 但是这个答案对我来说不起作用。 我有这个代码: public class LoginForm : Form { private TextBox tbUsername; public LoginForm() { tbUsername = new TextBox(); tbUsername.ShortcutsEnabled = true; tbUsername.Multiline = false; Controls.Add(tbUsername); } } 文本框出现了,我可以写上,我可以剪切,复制和粘贴文本没有任何问题。 但是,当我尝试按下Ctrl + A时 ,只听到一个类似于您试图从空文本框中删除文本(使用浏览器的地址栏进行试用)时听到的金光闪闪的“金光闪闪”。

表单不响应KeyDown事件

我在Windows窗体项目上工作了一段时间,并决定尝试使用键盘快捷键。 读了一下之后,我想我只需要编写一个事件处理程序,并将其绑定到窗体的KeyDown事件: private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.Control && e.Alt && e.KeyCode == Keys.O) { MessageBox.Show("Ctrl+Alt+O: magic!"); } } 我做了一个很好的方法来打开Visual Studiodevise器的属性面板,然后双击我的窗体的KeyDown事件来生成Form1_KeyDown事件处理程序。 但在testing我的应用程序时,表单完全不响应Ctrl + Alt + O键盘快捷键。 Visual Studiodevise器确实生成了将事件处理程序绑定到表单的代码: private void InitializeComponent() { // … this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown); // … } 所以我尝试添加一个Console.WriteLine()调用处理程序来检查它是否被调用,但没有运气。 另外,我试图在事件绑定调用(如上所示)上设置一个断点,并发现程序到达该断点就好了。 但是我在方法定义本身中设置的断点永远不会到达。 为了确保我正确地执行了前几个步骤,我试着重复下列步骤: 一个新的forms在同一个解决scheme。 同样的问题:当我按下Ctrl + Alt + O键盘快捷方式时,表单不响应,debugging器甚至没有进入事件处理程序。 试了一遍,它的工作原理。 […]

为C#寻找干净的WinForms MVC教程

如何创build丰富的用户界面Windows应用程序,例如Photo Shop。 我正在寻找干净的MVC教程WinForms与C#的地方。 ( 不是 ASP.NET MVC。) 在Windows平台上是新的; 大多数MSDN和互联网教程基本上把所有东西都放到Form类中。 更多的默认事件是在表单内部处理的,而不是将事件发送到控制器/模型,这反过来又改变了视图的状态。 或者是Windows应用程序的首选方法?

我如何dynamic更改C#combobox或文本框中的自动完成条目?

我在C#中有一个combobox,我想使用自动完成的build议,但是我想能够改变自动完成条目作为用户键入,因为可能有效的条目太多,无法在启动时填充AutoCompleteStringCollection 。 作为一个例子,假设我让用户键入一个名字。 我有一个可能的名字(“乔”,“约翰”)和一个姓氏列表(“Bloggs”,“史密斯”)的名单,但如果我有一千个,那么这将是一百万个可能的string – 自动完成条目太多了。 所以最初我想只有第一个名字作为build议(“Joe”,“John”),然后一旦用户键入了名字(“Joe”),我想删除现有的自动完成条目并replace他们用一组新名字组成,后面跟着可能的姓氏(“Joe Bloggs”,“Joe Smith”)。 为了做到这一点,我尝试了下面的代码: void InitializeComboBox() { ComboName.AutoCompleteMode = AutoCompleteMode.SuggestAppend; ComboName.AutoCompleteSource = AutoCompleteSource.CustomSource; ComboName.AutoCompleteCustomSource = new AutoCompleteStringCollection(); ComboName.TextChanged += new EventHandler( ComboName_TextChanged ); } void ComboName_TextChanged( object sender, EventArgs e ) { string text = this.ComboName.Text; string[] suggestions = GetNameSuggestions( text ); this.ComboQuery.AutoCompleteCustomSource.Clear(); this.ComboQuery.AutoCompleteCustomSource.AddRange( suggestions ); } 但是,这不能正常工作。 看起来,调用Clear()会导致自动完成机制“closures”,直到下一个字符出现在combobox中,但当然当下一个字符出现时,上面的代码再次调用Clear(),所以用户从不实际上看到了自动完成function。 […]

用户控制与Windows窗体

用户控件和Visual Studio中的窗体有什么区别 – C#?

如何模拟Windows关机进行debugging?

当Windowsclosures时,我的应用程序出现问题 – 我的应用程序没有正确退出,导致显示“结束任务”窗口。 我怎样才能使用debugging器来看看发生了什么? 有没有办法将Windows关机消息发送到我的应用程序,所以它认为Windows正在closures,所以我可以看到它的行为?

在父级的中心显示对话框

在父窗体的中心显示一个DialogBox是一团糟。 这是一个显示对话框的方法。 我将其父母放置在中心位置,但无法居中对话框 private void OpenForm(Object point, Object height, Object width) { FormLoading frm = new FormLoading(); Point temp = (Point)point; Point location = new Point(temp.X + (int)((int)width) / 2, temp.Y + (int)((int)height) / 2); frm.Location = location; frm.ShowDialog(); } private void btnView_Click(object sender, EventArgs e) { try { ThreadStart starter= delegate { OpenForm(currentScreenLocation, this.Height, […]