你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 计算机安全与维护
C#制作多功能屏幕保护程序(八)
 

关于编辑功能还有一个问题,如何将主窗口中选择的要编辑的项传递给新窗口?笔者的解决办法是给EditForm类增加一个Index属性,在新窗体显示前将被选中的ListBox的编号赋值给它。由于这样一个功能设计使得RssFeedList只能被设置为单选(属性中的SelectionMode值为One),这也是默认的设置。在EditForm类中添加如下代码:

        private int index;

        public int Index

        {

            get

            {

                return index;

            }

            set

            {

                index = value;

                rssFeedName.Text = Properties.Settings.Default.RssFeedNames[index];

                rssFeedTextBox.Text = Properties.Settings.Default.RssFeedUris[index];

            }

        }

这也是通用的C#类的属性设置结构。由于使用了RssFeed类中的静态函数需要在文件开始时使用using命令引用ScreenSharp.Rss命名空间,保存并关闭EditForm.cs,回到OptionForm.cs,在“编辑”按钮中的相应代码中加入如下代码:

            EditForm editForm = new EditForm();

            if ( RssFeedList.SelectedIndex != -1 )

                editForm.Index = RssFeedList.SelectedIndex;

            else

                editForm.Index = 0;

        editForm.Show();

“删除”的功能比较简单,不用新建一个窗体,直接在响应函数中处理就可以了,代码如下:

        private void del_Click(object sender, EventArgs e)

        {

            Properties.Settings.Default.RssFeedNames.RemoveAt(RssFeedList.SelectedIndex);

            Properties.Settings.Default.RssFeedUris.RemoveAt(RssFeedList.SelectedIndex);

            Properties.Settings.Default.Save();           

}

OptionForm.cs构造函数也需要更改一下,代码应改为:

            InitializeComponent();

 

            // 从当前设置加载文本框

            try

            {

                backgroundImageFolderTextBox.Text = Properties.Settings.Default.BackgroundImagePath;

                StringCollection sc = Properties.Settings.Default.RssFeedUris;

                if (sc.Count > 0)

                {

                    foreach (string str in Properties.Settings.Default.RssFeedNames)

                    {

                        RssFeedList.Items.Add(str);                       

                    }

                }

            }

            catch

            {

                MessageBox.Show("读入屏幕保护程序的设置时出现了问题。");

         }

由于使用了StringCollection需要引用System.Collections.Specialized命名空间。

UpdateApplyApplyChanges函数也需要改动成如下代码:

        // 仅在上次按下“应用”按钮后

    // 发生了更改的情况下将该按钮更新为活动状态

        private void UpdateApply()

        {

            if (Properties.Settings.Default.BackgroundImagePath != backgroundImageFolderTextBox.Text)

                applyButton.Enabled = true;

            else

                applyButton.Enabled = false;

        }

        // 应用自上次按下“应用”按钮后发生的所有更改

        private void ApplyChanges()

        {

            Properties.Settings.Default.BackgroundImagePath = backgroundImageFolderTextBox.Text;

            Properties.Settings.Default.Save();

        }

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089