Tag: 用户界面

GUI编程c ++或c#

我正在大学攻读软件工程课程。 我只是采用了数据结构,我几乎完成了设计模式。 通过设计模式类,教师可以让我们选择要使用的语言以及在我们的实验室中使用的IDE。 因为,我知道C ++主要使用它。 大多数类使用c#,有些使用java .. 好吧,我刚刚报名参加GUI编程春季学期,并且是同一位老师,他说我们可以使用我们喜欢的任何东西。 既然,我从未真正使用过C#,那么使用c ++会更好吗? 我已经研究过使用QT4,但我不知道它有多难,有多少帮助真的在那里? 因为,不会有太多的讲课.. 我正在考虑使用C#,因为我已经在VB.NET中学习了类并且使用了winforms。 但是,我很想用C ++你有什么想法? c ++ gui是我将来可能在现实世界中使用的东西吗? 或者我最好不要尝试学习C#我会喜欢在我的职业道路上坚持使用C ++。 我也不想同时学习C#和GUI。 QT4是一个好方法吗?

WPF MVVM – 简单登录到应用程序

我正在继续学习WPF,并且目前专注于MVVM并使用Karl Shifflett的“MVVM In a Box”教程。 但是有一个关于在views / viewmodels之间共享数据以及它如何在屏幕上更新视图的问题。 ps我还没有报道过IOC。 下面是我在测试应用程序中的MainWindow的屏幕截图。 它分为3个部分(视图),一个标题,一个带按钮的滑动面板,其余部分作为应用程序的主视图。 应用程序的目的很简单,登录到应用程序。 在成功登录后,登录视图应该被新视图(即OverviewScreenView)替换,并且应用程序幻灯片上的相关按钮应该变为可见。 我认为应用程序有2个ViewModel。 一个用于MainWindowView,一个用于LoginView,因为MainWindow不需要具有Login命令,所以我将它保持独立。 由于我尚未介绍IOC,我创建了一个LoginModel类,它是一个单例。 它只包含一个属性“public bool LoggedIn”,以及一个名为UserLoggedIn的事件。 MainWindowViewModel构造函数注册到事件UserLoggedIn。 现在在LoginView中,当用户在LoginView上单击Login时,它会在LoginViewModel上引发一个命令,如果正确输入用户名和密码,则会调用LoginModel并将LoggedIn设置为true。 这会导致UserLoggedIn事件触发,在MainWindowViewModel中处理该事件以使视图隐藏LoginView并将其替换为不同的视图,即概览屏幕。 问题 Q1。 明显的问题,就是这样登录正确使用MVVM。 即控制流程如下。 LoginView – > LoginViewViewModel – > LoginModel – > MainWindowViewModel – > MainWindowView。 Q2。 假设用户已登录,并且MainWindowViewModel已处理该事件。 您将如何创建新视图并将其放在LoginView所在的位置,同样如何在不需要时处理LoginView。 MainWindowViewModel中是否存在类似“UserControl currentControl”的属性,该属性设置为LoginView或OverviewScreenView。 Q3。 MainWindow是否应该在visual studio设计器中设置LoginView。 或者它应该留空,并以编程方式确认没有人登录,因此一旦加载了MainWindow,它就会创建一个LoginView并在屏幕上显示它。 下面的一些代码示例是否有助于回答问题 MainWindow的XAML MainWindowViewModel using System; using System.Windows.Controls; […]

在Windows窗体上添加按钮到窗口的侧面

我想在C# (在外面)的窗体侧面添加按钮。 窗口移动后,按钮应一起移动。 例如 :

带有底部边框的TextBox

我希望TextBox具有底部边框,但由于Color.Transparent为TextBox绘制的图形在resize时会扭曲/损坏。 使用我发现的代码,我能够创建一个带下划线的TextBox(带有透明顶部,左侧,右侧的绘制矩形)。 问题是当我调整窗体/窗口的大小时:当我将其调整为较小,然后再次resize以扩展它时,绘制的图形会失真。 对此有任何修复? 这是照片: 第二张照片已经调整得更小,然后又回到更大的尺寸。 这是代码: [DllImport(“user32”)] private static extern IntPtr GetWindowDC(IntPtr hwnd); struct RECT { public int left, top, right, bottom; } struct NCCALSIZE_PARAMS { public RECT newWindow; public RECT oldWindow; public RECT clientWindow; IntPtr windowPos; } float clientPadding = 0; int actualBorderWidth = 2; Color borderColor = Color.Black; protected override void WndProc(ref […]

如何使用箭头在文本框之间移动光标?

我有几个textboxes ,我希望光标使用箭头键从一个textbox移动到另一个textbox 。 我怎样才能做到这一点? 它看起来像这样,水龙头也垂直移动,这很奇怪。 谢谢。

C#表单控件不会使用multithreading更新

我一直在玩multithreading并阅读这里的一些问题,但我没有找到直接解决我的问题的答案。 我有一个在单个线程上运行的应用程序,除了单独窗口中的进度条。 根据我的研究,我需要为该表单创建一个新线程,它将重新绘制表单的控件,因为它的属性会发生变化。 我已将问题简化为以下简单示例: 这是’主要’计划: class Program { static MyForm form; static void Main(string[] args) { form = new MyForm(); form.Show(); doWork(); form.Close(); } //arbitrary example of processing that takes some period of time static void doWork() { while (form.Value < 100000) { form.ChangeVal(); Thread.Sleep(1); } return; } } ……这是表格。 我不包括来自VS的自动生成的东西。 public partial class MyForm […]

如何在不按Tab键的情况下强制DataGridView当前单元格轮廓

是否有某种方法可以使DataGridView的当前单元格在按Tab键时始终具有围绕它的虚线边框? 我注意到,如果你曾经按过Tab键一次,那么当前的单元格总是有边框,但是我想从头开始有那个边框,而不必按Tab键。 目前我以编程方式发送Tab键,如下所示: SendKeys.Send(“{TAB}”); 但这很糟糕,如果可以的话,我宁愿有一个合适的解决方案。 编辑:我忘了提到SelectionMode设置为FullRowSelect ,我不打算改变它。 我希望边框轮廓只围绕当前单元格以及整个行被突出显示。

C# – 访问变量动态命名

我正在自动化网页。 我已经捕获并保存了文件中的链接。 Link Url_0=”gmail.com” Link Url_1=”ymail.com” Link Url_2=”hotmail.com” Link Url_3=”outlook.com” 以下语句将点击每个url。 HomePage.Url_0.Click();//Homepage is the Class name 我想逐个点击这些url。 所以我使用for循环。 for(int i=0;i<3;i++) { String url=String.Format("Url_{0}",i); HomePage.url.Click(); //This is throwing me error (I think that this is not correct way to do.) Sleep(2000); } 我该怎么办? 这可以以任何方式完成吗? 任何帮助表示赞赏。

BackgroundWorker线程和定时器逻辑

我一直在尝试为我的计时器和后台工作者线程提供正确的逻辑。 虽然我阅读了所有内容,但我并不完全了解整个系统。 以下是相关代码的摘录:我的轮询按钮: private void pollStart_Click(object sender, EventArgs e) { tst_bgw = new BackgroundWorker(); //mandatory. Otherwise will throw an exception when calling ReportProgress method tst_bgw.WorkerReportsProgress = true; //mandatory. Otherwise we would get an InvalidOperationException when trying to cancel the operation tst_bgw.WorkerSupportsCancellation = true; tst_bgw.DoWork += tst_bgw_DoWork; tst_bgw.ProgressChanged += tst_bgw_ProgressChanged; tst_bgw.RunWorkerCompleted += tst_bgw_RunWorkerCompleted; tst_bgw.RunWorkerAsync(); } 我认为到目前为止是正确的 […]

C#/ WPF从另一个类中创建的另一个线程更新UI

我来自一个嵌入式C背景,我正在研究我的第一个C#应用程序,我已经碰壁了,我的研究还没有完成,所以我想我会问这里。 简单的app,到目前为止。 我有一个MainWindow,在一堆其他东西中,在按钮点击时启动一个TCPClient线程: public partial class MainWindow : Window { …. TCPConnection myCon = new TCPConnection(); …. private void connectButton_Click(object sender, RoutedEventArgs e) { networkListBox.Items.Add(“Connecting…”); myCon.Connect(“localhost”, updateNetworkListBox); } } …. public void updateNetworkListBox(string message) { networkListBox.Items.Add(message); } 在TCPConnection.cs中: public class TCPConnection { …. public void Connect(string server, ReportDelegate reportDelegate) { this.server = server; clientThread = […]