当前位置:编程学习 > C#/ASP.NET >>

在WinForm开发中,你认为什么操作最麻烦?或者说用起来不舒服?送分

在做程序的时候,你认为什么地方写起来麻烦,或者说用起来不舒服。

比如说两个窗体之间传递数据,多个文本框数据的封装……等

说出来,送分。 --------------------编程问答-------------------- 重写控件,GDI画图和事件绑定 --------------------编程问答-------------------- 重写控件,GDI画图和事件绑定 --------------------编程问答-------------------- ?完全不知道说撒 --------------------编程问答-------------------- 委托  --------------------编程问答-------------------- 调用的Com组件总是释放不完 --------------------编程问答--------------------
引用 1 楼 nattystyle 的回复:
重写控件,GDI画图和事件绑定


同感,开放的部分太少了,完全不够控制 --------------------编程问答-------------------- UI的设计 --------------------编程问答-------------------- 两个窗体之间传递数据 --------------------编程问答-------------------- 多线程 --------------------编程问答-------------------- 比如说两个窗体之间传递数据 --------------------编程问答-------------------- 调用com组件和API,C#在这方面,简直就是个残废...唉,C/C++才是王道... --------------------编程问答-------------------- LZ的窗体间传参不是已经给你解决了吗,???不知道说些什么啊 --------------------编程问答-------------------- 多线程,界面设计。 --------------------编程问答-------------------- 多线程哪里不舒服,可以说详细点 --------------------编程问答-------------------- 两个窗体间传递数据,通过构造函数的参数。 --------------------编程问答--------------------
引用 2 楼 nattystyle 的回复:
重写控件,GDI画图和事件绑定

就是这个……C#把东西都封好了以至于想改都改不了……果然还是C/C++比较有爱…… --------------------编程问答--------------------
引用 7 楼 amandag 的回复:
UI的设计

引用 9 楼 fxqyyzg 的回复:
多线程
--------------------编程问答-------------------- 我是路过学习的,即将踏入此领域。 --------------------编程问答-------------------- .... --------------------编程问答-------------------- GDI画图  通信 --------------------编程问答-------------------- 做网络通信时,不知道怎么把struct与byte[]互相转换。。。 --------------------编程问答-------------------- 速度慢,占用空间大 --------------------编程问答-------------------- 不会的就不舒服 --------------------编程问答-------------------- 不会的就不舒服  说的有理 
但楼主意思是会做但弄出来就是觉的不好,不完美的.....
窗体传值.... --------------------编程问答--------------------
引用 1 楼 nattystyle 的回复:
重写控件,GDI画图和事件绑定

同感 --------------------编程问答-------------------- 异步调用和使用COM时 --------------------编程问答-------------------- 看来WPF 的出现是个必然…… --------------------编程问答-------------------- 界面设计,设计出来稍微漂亮的界面,都是用图片弄出来的,窗体移动时很卡,
而且占用内存大。。。

编写向导也很要命。。。
--------------------编程问答--------------------
引用 1 楼 nattystyle 的回复:
重写控件,GDI画图和事件绑定

支持。界面设计也麻烦啊。貌似应该不是我们写代码的要考虑的! --------------------编程问答-------------------- 不会的就不舒服 --------------------编程问答-------------------- 我感觉WINFORM本身不难学.
但是调用COM和API最麻烦,
想想GDI+也忘了好多,是忘的最多一部分 --------------------编程问答--------------------
救命啊!

调用COM和API都没做过!

不会的就是麻烦 --------------------编程问答-------------------- 迭代,委托处理事件的时候比较麻烦 --------------------编程问答--------------------
引用 1 楼 nattystyle 的回复:
重写控件,GDI画图和事件绑定


…………相反,我觉得这两个是最爽的……
因为我以前做VB……不能继承……只能SubClass,很痛苦 --------------------编程问答--------------------
引用 21 楼 lake_cx 的回复:
做网络通信时,不知道怎么把struct与byte[]互相转换。。。


用API,CopyMemory
或者,你看看 Marshal类里面的ToStructure方法 --------------------编程问答-------------------- 已经很方便了.........也够简单了 --------------------编程问答-------------------- 菜鸟一只慢慢飞过,楼上的全看不懂。。 --------------------编程问答-------------------- 介面交互部分,麻烦又浪费时间 --------------------编程问答-------------------- 其实感觉最难的还是系统的结构,可能有点文不对题,但是这是我目前最大的困惑 --------------------编程问答-------------------- UI的设计
--------------------编程问答-------------------- 多线程 --------------------编程问答-------------------- 不会就不舒服 --------------------编程问答-------------------- 打印和批量输入,能把excel集成到c#中就好了。 --------------------编程问答-------------------- 老板改变主意 --------------------编程问答-------------------- 多线程的问题 --------------------编程问答-------------------- 多线程和GUI画图 --------------------编程问答-------------------- 委托和api --------------------编程问答-------------------- 调用其他语言写的动态链接库!很麻烦!很痛苦!
最近用C#写界面,C++写算法!谁知道整合的时候,指针的值传不出来,摸索中!!! --------------------编程问答--------------------
引用 28 楼 PrinSun 的回复:
界面设计,设计出来稍微漂亮的界面,都是用图片弄出来的,窗体移动时很卡,
而且占用内存大。。。

编写向导也很要命。。。

好像就是UI了  WPFの必然 --------------------编程问答-------------------- UI好做,就是调用本地dll不好弄. --------------------编程问答-------------------- Treeview 的 drag,从VB到C#都做得非常不友好,罗罗嗦嗦一大堆 --------------------编程问答-------------------- 在进行数据显示时,数据多时,赋值太麻烦
--------------------编程问答-------------------- 因人而异,因能力而不同。其实只是一个过程,在过程中学会思考与积累最重要! --------------------编程问答-------------------- 因人而异,因能力而不同。其实只是一个过程,在过程中学会思考与积累最重要! --------------------编程问答-------------------- 界面 --------------------编程问答-------------------- GDI画图~ --------------------编程问答-------------------- 1.InvalidOperationException窗体跨线程的不安全操作
解决:
1】可以通过将 CheckForIllegalCrossThreadCalls 属性的值设置为 false 来禁用此异常。这会使控件以与在 Visual Studio 2003 下相同的方式运行。----蠢办法
2】使用委托 delegate void SetTextCallback(string text);
 private void SetText(string text)
        {
            // InvokeRequired required compares the thread ID of the
            // calling thread to the thread ID of the creating thread.
            // If these threads are different, it returns true.
            if (this.textBox1.InvokeRequired)
            {
                SetTextCallback d = new SetTextCallback(SetText);
                this.Invoke(d, new object[] { text });
            }
            else
            {
                this.textBox1.Text = text;
            }
        }


委托处理方法

 ISynchronizeInvoke synchronizer;
                synchronizer = this;
                if (synchronizer.InvokeRequired)
                {
                    MethodInvoker invoker = new
                    MethodInvoker(this.Close);
                    synchronizer.Invoke(invoker, null);
                }
                else
                { this.Close(); }


--------------------编程问答--------------------
引用 21 楼 lake_cx 的回复:
做网络通信时,不知道怎么把struct与byte[]互相转换。。。



        #region" 结构体struct与字节数组 byte[] 的转换 "

        /// 结构体转byte数组
        /// </summary>
        /// <param name="structObj">要转换的结构体</param>
        /// <returns>转换后的byte数组</returns>
        public static byte[] StructToBytes(object structObj)
        {
            byte[] bytes;
            try
            {
                //得到结构体的大小
                int size = Marshal.SizeOf(structObj);
                //创建byte数组
                bytes = new byte[size];
                //分配结构体大小的内存空间
                IntPtr structPtr = Marshal.AllocHGlobal(size);
                //将结构体拷到分配好的内存空间
                Marshal.StructureToPtr(structObj, structPtr, false);
                //从内存空间拷到byte数组
                Marshal.Copy(structPtr, bytes, 0, size);
                //释放内存空间
                Marshal.FreeHGlobal(structPtr);
                //返回byte数组
                return bytes;
            }
            catch (Exception ex)
            {
                BizLogic.LogWriter.AddSystemException(ex);
                return bytes = null;
            }

        }

        /// byte数组转结构体
        /// </summary>
        /// <param name="bytes">byte数组</param>
        /// <param name="type">结构体类型</param>
        /// <returns>转换后的结构体</returns>
        public static object BytesToStuct(byte[] bytes, Type type)
        {
            object obj;
            try
            {
                //得到结构体的大小
                //mbox.msgbox(type.FullName);
                int size = Marshal.SizeOf(type);
                //byte数组长度小于结构体的大小
                if (size > bytes.Length)
                {
                    //返回空
                    return obj = null;
                }
                //分配结构体大小的内存空间
                IntPtr structPtr = Marshal.AllocHGlobal(size);
                //将byte数组拷到分配好的内存空间
                Marshal.Copy(bytes, 0, structPtr, size);
                //将内存空间转换为目标结构体
                obj = Marshal.PtrToStructure(structPtr, type);
                //释放内存空间
                Marshal.FreeHGlobal(structPtr);
                //返回结构体
                return obj;
            }
            catch (Exception ex)
            {
                BizLogic.LogWriter.AddSystemException(ex);
                return obj = null;
            }
        }



        #endregion
--------------------编程问答-------------------- 2个窗体的值传递。和水晶报表 --------------------编程问答-------------------- 界面做得太难看 --------------------编程问答-------------------- 界面、委托与事件的关系   图形重绘   保存流文件   序列化  --------------------编程问答-------------------- 多线程异步、同步、死锁、安全等等。
--------------------编程问答-------------------- 非本线程创建的控件在其他线程中的安全 --------------------编程问答-------------------- 底层的东西,如果已经封装到.NET类库就会很方便,否则就会出现灾难性的后果。
希望.NET类库的后续版本能够将全部的API封装进去。 --------------------编程问答-------------------- 每个方面都还不够强! --------------------编程问答-------------------- 感觉控件不够丰富,自定义太麻烦了 --------------------编程问答-------------------- UI设计不象Webform那么方便
--------------------编程问答-------------------- 刚开始学,感觉都不舒服,哈哈! --------------------编程问答-------------------- 界面设计 --------------------编程问答-------------------- 用第三方控件的时候,在界面上把控件删除了,可是在***.Designer.cs中有垃圾代码,需要手工删除。
不知道vs自带的控件中有没有这种情况。 --------------------编程问答-------------------- 自己画图 --------------------编程问答-------------------- 1.子线程访问主线程的UI控件
2.调用API --------------------编程问答--------------------
引用 72 楼 huwei001982 的回复:
1.子线程访问主线程的UI控件
2.调用API

同意 --------------------编程问答-------------------- 别人都说了这么多了哦。
1:C#写出来程序性能低
2:为什么微软不把framework的版本及时整合到Windows系统中去呢????现在都只有1.0的。
   不集成到系统。net写的东西更本没办法平民化啊,别人运行一个你的程序还要下个几十兆的framework ,他懒得下走人。。。。 --------------------编程问答-------------------- 多态 --------------------编程问答--------------------
引用 70 楼 patrickpan 的回复:
用第三方控件的时候,在界面上把控件删除了,可是在***.Designer.cs中有垃圾代码,需要手工删除。 
不知道vs自带的控件中有没有这种情况。

同感 --------------------编程问答--------------------
引用 74 楼 yidongliange4 的回复:
别人都说了这么多了哦。 
1:C#写出来程序性能低 
2:为什么微软不把framework的版本及时整合到Windows系统中去呢????现在都只有1.0的。 
  不集成到系统。net写的东西更本没办法平民化啊,别人运行一个你的程序还要下个几十兆的framework ,他懒得下走人。。。。


有道理 --------------------编程问答-------------------- GDI  和    API --------------------编程问答-------------------- 调用COM
一层层声明,一层层释放,很累。 --------------------编程问答-------------------- 不会的东西 我觉得麻烦.. --------------------编程问答-------------------- UI界面 --------------------编程问答-------------------- 麻烦的有委托,消息传递等. --------------------编程问答-------------------- 多线程,重写控件 --------------------编程问答-------------------- UI的设计

速度慢,占用空间大


打印和批量输入,能把excel集成到c#中就好了。


界面设计,设计出来稍微漂亮的界面,都是用图片弄出来的,窗体移动时很卡, 
而且占用内存大。。。 

编写向导也很要命。。。 

介面交互部分,麻烦又浪费时间

不会的就不舒服 --------------------编程问答-------------------- 页面间的传值相对于WebForm来说麻烦得多了 --------------------编程问答-------------------- 1、多国语言,在设计时,有时候两种语言之间切换一下,其中一种语言的resource可能丢掉
2、多线程操作窗体界面,非要弄个delegate才能正常运作
3、界面布局,尤其是带有splitter的布局,比如:我想创建一个MDI程序,MDI主窗体左边是一个TreeView,然后我希望TreeView的右边有个splitter能够让用户改变treeview的大小。目前看来,靠简单的控件基本上没法实现
4、不支持ActionList。菜单和ToolStrip如果有相同的Action,还得编程去控制,跟Delphi差了一截
--------------------编程问答-------------------- GDI。3D方面还是少了点,wpf还没怎么研究。感觉不太方便 --------------------编程问答-------------------- GDI画图和事件绑定 --------------------编程问答-------------------- 水晶报表的制作还是太麻烦了 --------------------编程问答-------------------- 如果更好的释放资源[回复内容太短了!] --------------------编程问答--------------------
引用 20 楼 nzhrwf 的回复:
GDI画图  通信


. --------------------编程问答-------------------- ...... --------------------编程问答-------------------- GDI画图和多线程的使用 --------------------编程问答-------------------- 跨线程控件使用!跨线程控件使用!跨线程控件使用! --------------------编程问答-------------------- 水晶报表设计部署还很幼稚 --------------------编程问答-------------------- 我是来接分的。。。回复内容太短了! --------------------编程问答-------------------- 资源释放问题,有时候释放得太慢了,还有就是控件的重写 --------------------编程问答-------------------- 控件开源就好了 --------------------编程问答-------------------- 多线程,重写组件GDI 很是郁闷 --------------------编程问答-------------------- 如何设计一个 可以复用的窗体感觉蛮难。

比如  客户管理 界面 有5个文本框共输入“客户姓名”等信息,如何使这个窗体在添加客户,修改客户等多个场合使用,不同场合往往有些共性和不同差异。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,