我是初学者,想做一个WPF应用程序
答案:3 悬赏:80 手机版
解决时间 2021-03-24 14:38
- 提问者网友:最美的风景
- 2021-03-23 14:17
我是初学者,想做一个WPF应用程序
最佳答案
- 五星知识达人网友:英雄的欲望
- 2021-03-23 15:50
个人疑问,仅供参考:
为什么要提供如此复杂的功能呢?
用户的自由度一大,程序崩溃的可能性就越大。
和数据有关的程序,界面的美观、使用的方便都不是第一位的吧?个人觉得稳定性才是最重要的。你在编程的时候大多数时候难道不是在处理用户进行的异常操作、因数据格式错误而导致异常状况么?
为什么不直接使用DataGrid(WPF 4.0自带)呢?这貌似比让用户自己乱画一气好些吧?追问因为现在用的上这个东西,哎 很郁闷。 您能不能帮下我啊,真的不太懂。给我个思路什么的,用到的空间。最好有关键部分的代码。谢谢啦追答说到wpf的表格控件我只用过DataGrid,而且只用过其中一小部分功能。
——要实现类似Word表格这样的功能可不是个小工程!!!我很怀疑凭一个人的精力能不能在几个月之内完成。
要说思路,先得搞清楚这样几个问题吧:
你为什么要让用户画表格呢?
用户画表格的时候有规律吗?简单的二维表还是带斜线表头?要不要带“合并单元格”功能?
——合并单元格的功能做起来极其麻烦,还得配合键盘导航(按方向键如何选取单元格?)
表格和单元格要不要提供“背景”“前景”“边框”“间距”等属性?
表格要不要支持背景图片、渐变背景?单元格中要不要支持图片内容?
如果支持图片,与文本的位置如何布局?
表中的文字如何显示?——是用TextBlock?
表中的文字如何编辑?——要不要提供“填充”等功能?——还是让用户在Excel中编辑表的数据,然后直接解析一下,粘贴到新表中?
——如果没有单元格内换行的话,Excel中复制来的文本基本是用“\r”来分行,用“\t”来分单元格(貌似有时候可能还会出现“\n”),这个其实也是挺麻烦的。
表中的数据是不是要进行统计?还是只简单地存储在数据库中?
有没有必要直接查询表中的数据内容?
——如果不需要,表格如何转换成数据库中的记录?
——如果需要查询、统计这些功能,就必须考虑将画出来的表与数据库中的表进行对应(读取/写入)。
至于打印,WPF可以将控件(包括ScrollViewer中不可见的部分)用RenderBitmap做成一张图片——尽管有时候会有1像素黑边——但这样就可以打印了。从效果来看,tiff格式可能更好一些(可以做成300×300DPI,一般也够了),其它格式我没能成功(像PNG格式只能做到96DPI,屏幕显示还成,打印就会有明显锯齿)。追问恩 目前我想做的就是 像我们用VS 做水晶报表时候画表格的那种功能就可以。要存储在数据库中,查询,统计 要实现。 这么多人回答,就您最细心了,其他人都是骗分的。 希望您能多帮帮我。 要是有时间希望您能加我扣扣追答我没用过水晶报表(非专业程序员),因此不清楚是什么样子。不过国外的报表一般都是二维表,然后组成数据透视。
=============================================================================
如果你要的表能够拆解成二维表,或者本身就是二维表的话。前台是可以考虑使用DataGrid控件,然后,提取数据存储到数据库中的对应表里即可。(毕竟二维表一行就是一个记录,两层循环就能解决数据存储的问题。)
你在前台窗口提供一些菜单或者按钮,允许用户对DataGrid添加/删除行或列/编辑字段的值(其实就是让用户可以定义表的结构和数据)就可以了。
这个方案既可以对用户进行比较严格的限制,防止用户做出太复杂的表;也可以考虑分组(我没用过分组),这样貌似可以做出较复杂的统计表。
==============================================================================
如果一定要让用户手工“画”表,那么可以试试在一个Grid中添加一些TextBox(TextBlock消耗的资源更小些,但不能编辑)——在表比较小的情况下是可行的,但个人认为还是用现成的控件更好。
可以将TextBox类自己封装一个,提供“GirdX”“GirdY”“IsHeader”等需要的属性。
然后给用户提供一些菜单(或按钮什么的),让用户可以定义“行数”“列数”等等。
这个方案的坏处是:
只有在表相当简单的情况下才合算——要做出完整的功能太费事,消耗的资源还多。并且,数据的处理可能相当繁琐而导致程序稳定性下降。
但这个方案的好处是:
你可以做出较复杂的布局——因为Gird是支持跨行列的,所以可以做出“合并单元格”的效果。
实际上如果用户的需求大到需要用户自己建立表格,那么系统可能就太过复杂了,这个时候让用户直接使用成熟的数据库管理软件可能才是更好的方案——可是用户常常并不愿意去学习。
我觉得你在作决定之前,最好对WPF的DataGrid控件/数据绑定等功能先进行一下了解,然后再决定是否要用WPF来做这个功能。初学者一旦贸然决定采用这玩意儿,后期可能很难维护。
做商业软件,应尽可能采用成熟的技术方案,不然出了问题,用户找过来是很头痛的。
我用WPF给人做一个微型的数据库的界面,结果可能因为安装了.net补丁,一个功能失效了,我当时就下不来台。另外,WPF应用程序首次启动一般较慢,用户可能受不了。所以如果不是必须用WPF,我建议你用你最熟悉的框架来做。
为什么要提供如此复杂的功能呢?
用户的自由度一大,程序崩溃的可能性就越大。
和数据有关的程序,界面的美观、使用的方便都不是第一位的吧?个人觉得稳定性才是最重要的。你在编程的时候大多数时候难道不是在处理用户进行的异常操作、因数据格式错误而导致异常状况么?
为什么不直接使用DataGrid(WPF 4.0自带)呢?这貌似比让用户自己乱画一气好些吧?追问因为现在用的上这个东西,哎 很郁闷。 您能不能帮下我啊,真的不太懂。给我个思路什么的,用到的空间。最好有关键部分的代码。谢谢啦追答说到wpf的表格控件我只用过DataGrid,而且只用过其中一小部分功能。
——要实现类似Word表格这样的功能可不是个小工程!!!我很怀疑凭一个人的精力能不能在几个月之内完成。
要说思路,先得搞清楚这样几个问题吧:
你为什么要让用户画表格呢?
用户画表格的时候有规律吗?简单的二维表还是带斜线表头?要不要带“合并单元格”功能?
——合并单元格的功能做起来极其麻烦,还得配合键盘导航(按方向键如何选取单元格?)
表格和单元格要不要提供“背景”“前景”“边框”“间距”等属性?
表格要不要支持背景图片、渐变背景?单元格中要不要支持图片内容?
如果支持图片,与文本的位置如何布局?
表中的文字如何显示?——是用TextBlock?
表中的文字如何编辑?——要不要提供“填充”等功能?——还是让用户在Excel中编辑表的数据,然后直接解析一下,粘贴到新表中?
——如果没有单元格内换行的话,Excel中复制来的文本基本是用“\r”来分行,用“\t”来分单元格(貌似有时候可能还会出现“\n”),这个其实也是挺麻烦的。
表中的数据是不是要进行统计?还是只简单地存储在数据库中?
有没有必要直接查询表中的数据内容?
——如果不需要,表格如何转换成数据库中的记录?
——如果需要查询、统计这些功能,就必须考虑将画出来的表与数据库中的表进行对应(读取/写入)。
至于打印,WPF可以将控件(包括ScrollViewer中不可见的部分)用RenderBitmap做成一张图片——尽管有时候会有1像素黑边——但这样就可以打印了。从效果来看,tiff格式可能更好一些(可以做成300×300DPI,一般也够了),其它格式我没能成功(像PNG格式只能做到96DPI,屏幕显示还成,打印就会有明显锯齿)。追问恩 目前我想做的就是 像我们用VS 做水晶报表时候画表格的那种功能就可以。要存储在数据库中,查询,统计 要实现。 这么多人回答,就您最细心了,其他人都是骗分的。 希望您能多帮帮我。 要是有时间希望您能加我扣扣追答我没用过水晶报表(非专业程序员),因此不清楚是什么样子。不过国外的报表一般都是二维表,然后组成数据透视。
=============================================================================
如果你要的表能够拆解成二维表,或者本身就是二维表的话。前台是可以考虑使用DataGrid控件,然后,提取数据存储到数据库中的对应表里即可。(毕竟二维表一行就是一个记录,两层循环就能解决数据存储的问题。)
你在前台窗口提供一些菜单或者按钮,允许用户对DataGrid添加/删除行或列/编辑字段的值(其实就是让用户可以定义表的结构和数据)就可以了。
这个方案既可以对用户进行比较严格的限制,防止用户做出太复杂的表;也可以考虑分组(我没用过分组),这样貌似可以做出较复杂的统计表。
==============================================================================
如果一定要让用户手工“画”表,那么可以试试在一个Grid中添加一些TextBox(TextBlock消耗的资源更小些,但不能编辑)——在表比较小的情况下是可行的,但个人认为还是用现成的控件更好。
可以将TextBox类自己封装一个,提供“GirdX”“GirdY”“IsHeader”等需要的属性。
然后给用户提供一些菜单(或按钮什么的),让用户可以定义“行数”“列数”等等。
这个方案的坏处是:
只有在表相当简单的情况下才合算——要做出完整的功能太费事,消耗的资源还多。并且,数据的处理可能相当繁琐而导致程序稳定性下降。
但这个方案的好处是:
你可以做出较复杂的布局——因为Gird是支持跨行列的,所以可以做出“合并单元格”的效果。
实际上如果用户的需求大到需要用户自己建立表格,那么系统可能就太过复杂了,这个时候让用户直接使用成熟的数据库管理软件可能才是更好的方案——可是用户常常并不愿意去学习。
我觉得你在作决定之前,最好对WPF的DataGrid控件/数据绑定等功能先进行一下了解,然后再决定是否要用WPF来做这个功能。初学者一旦贸然决定采用这玩意儿,后期可能很难维护。
做商业软件,应尽可能采用成熟的技术方案,不然出了问题,用户找过来是很头痛的。
我用WPF给人做一个微型的数据库的界面,结果可能因为安装了.net补丁,一个功能失效了,我当时就下不来台。另外,WPF应用程序首次启动一般较慢,用户可能受不了。所以如果不是必须用WPF,我建议你用你最熟悉的框架来做。
全部回答
- 1楼网友:冷風如刀
- 2021-03-23 17:28
用Canvas自己划线就可以啊追问我的意思是做一个WPF应用程序,用户可以用我的程序自己动手画表格,不是我画好表格他们填数据。 最好可以把表格导出打印等。
您能不能具体点呢?追答你自己设计好规则就行了啊,根据用户的输入按照你预先设定好的规则绘制不就行了追问给个流程行不行。你说的太简单了 我不太懂啊
您能不能具体点呢?追答你自己设计好规则就行了啊,根据用户的输入按照你预先设定好的规则绘制不就行了追问给个流程行不行。你说的太简单了 我不太懂啊
- 2楼网友:酒者煙囻
- 2021-03-23 16:47
//在一个按钮事件中,执行下列代码,当在textBox中输入网址,点击按钮就会显示网页。
private void button1_Click(object sender, EventArgs e)
{
string url = textBox1.text;
System.Threading.Thread.Process.Start(url);
}
private void button1_Click(object sender, EventArgs e)
{
string url = textBox1.text;
System.Threading.Thread.Process.Start(url);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯